记一次antlr错误:ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.2ANTLR

场景:重构spark 2.1版本的sql语法。因此 需要使用antlr;
前期准备:idea安装了antlr插件(antlr的4.7.2版本)

因此在maven工程中添加了antlr的依赖:
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>4.7.2</version>
</dependency>
同事在mac的环境下也配置了antlr4.7.2的环境变量
#export CLASSPATH=".:/usr/local/lib/antlr-4.7-complete.jar:$CLASSPATH"
#export CLASSPATH=".;%JAVA_HOME%\jre\lib\rt.jar;/usr/local/lib/antlr-4.7-complete.jar:$CLASSPATH"
#alias antlr4='java -jar /usr/local/lib/antlr-4.7-complete.jar'
#alias grun='java org.antlr.v4.gui.TestRig'
一切工作准备就绪,使用idea运行重构好的spark sql,在编译期出现如下错误:
ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.2ANTLR:
错误的认为是:
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
</dependency>
点击进入依赖,看当前antlr4的底层的依赖:
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.5.3</version> <!-- use older version to process XPathLexer.g4, avoiding cyclic build dependency -->
<executions>
<execution>
<id>antlr</id>
<configuration>
<sourceDirectory>src</sourceDirectory>
</configuration>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
</plugin>
这样就能对上错误问题了,因为使用4.7.2生成的代码。但是在编译期间是4.5.3;所以出错了
错误的解决:
将4.5.3改成4.7即可
##############################真实的原因######################################################
spark 2.1版本,支持的antlr是4.5.3.可以下载spark源码,查看maven依赖

由以上可以推断出错误的原因大致是因为spark 2.1版本目前还不支持antlr4.7.2
解决:
修改antlr环境变量,改成antlr4.5.3版本
export CLASSPATH=".:/usr/local/lib/antlr-4.5.3-complete.jar:$CLASSPATH"
alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.5.3-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
alias grun='java org.antlr.v4.runtime.misc.TestRig'
然后卸载掉idea的antlr插件;
(https://www.cnblogs.com/niutao/)
这样重新基于antlr生成代码后,就可以正常运行了

记一次antlr错误:ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.2ANTLR的更多相关文章
- 探索Antlr(Antlr 3.0更新版)
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://www.blogbus.com/dreamhead-logs/10756716.html <探索Antlr> ...
- NET Runtime version 2.0.50727.42 - 执行引擎错误 或者无法创建应用程序域
server2003操作系统 IIS运行应用程序报错,应用程序事件查看器详细: NET Runtime version 2.0.50727.42 - 执行引擎错误 或者无法创建应用程序域 解决方法:卸 ...
- 编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。
编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义.必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neu ...
- .NET Runtime version 2.0.50727.8762 - 执行引擎错误(7969097A) (80131506)
VS2010调试IIS发布的web工程提示:无法连接到 Visual Studio 开发服务器 .NET Runtime version 2.0.50727.8762 - 执行引擎错误(7969097 ...
- Thymeleaf 3.0.9.RELEASE is the current stable version. It requires Java SE 6 or newer.
Thymeleaf 3.0.9.RELEASE is the current stable version. It requires Java SE 6 or newer. Release date: ...
- Caused by: MetaException(message:Hive Schema version 2.1.0 does not match metastore's schema version 1.2.0 Metastore is not upgraded or corrupt)
解决方案汇总: ()删除HDFS上的hive数据与hive数据库 hadoop fs -rm -r -f /tmp/hive hadoop fs -rm -r -f /user/hive ()删除My ...
- centos 7 运行Quartus ii 17.0 标准版,下载程序时遇到错误error (209053): unexpected error in jtag server -- error code 89
对于错误error (209053): unexpected error in jtag server -- error code 89,它产生的原因在于,在linux系统下,Quartus ii的驱 ...
- 解决CUDA driver version is insufficient for CUDA runtime version
问题 在服务器上安装mxne的GPU版本 sudo pip install mxnet-cu80==1.2.1 然后在gpu上创建数据 import mxnet as mx mx.nd.array([ ...
- CUDA driver version is insufficient for CUDA runtime version 解决
配置ubuntu17.1+CUDA9.2的caffe环境,CUDA sample编译完成,执行到./deviceQuery时报错:CUDA driver version is insufficient ...
随机推荐
- 怎样理解Canvas
Canvas 是一种在网页中的画布, 是一个HTML5新增的标签, 是一种高效的绘制图形的技术, 在JavaScript中有一个专门的API用于给他赋能( CanvasRenderingContext ...
- hdu 6043 KazaQ's Socks
规律题.我自己写的规律对长度为2的要特判,wa一万次... 规律题目,容易错的反而是数据小的时候,得长记性. 题解:规律 先是1~n 然后1~n-2 n-1 1~n-2 n 交替出现 比如当n=4 ...
- hdu 1502 大数dp
对于每一个dp的问题 从其最优解的结构(分哪几种形式或者情况)入手 然后分析状态 这样就比较好找出状态转方程这里数据结构的选择很简单 顺序数组就可以 填充的方式顺序填充就可以 然后这道题目卡了我大数. ...
- VBA精彩代码分享-1
今天下班前分享一下之前在网上搜到的两段好用的VBA代码,貌似都来自国外,觉得挺好,模仿不来. 第一段的功能是修改VBA控件中的文本框控件,使其右键可以选择粘贴.复制.剪切等: Option Expli ...
- NetScaler Logs Collection Guide
NetScaler Logs Collection Guide 来源 https://support.citrix.com/article/CTX227560 Article | Authentic ...
- 在开源UOJ的导航栏中添加新页面链接
前言 刚用开源UOJ搭建OJ成功时就想在导航栏那里添加一个站内页面链接,无奈当时乱搞水平低,网上也没有教程,不晓得怎么弄 今天突然来了闲情乱搞一通,结果还真乱搞成了...特意写下为后来人少走点弯路 前 ...
- ES6入门:数据劫持、Proxy、Reflect
什么是数据劫持 Object数据劫持实现原理 Array数据劫持的实现原理 Proxy.Reflect 一.什么是数据劫持 定义:访问或者修改对象的某个属性时,在访问和修改属性值时,除了执行基本的数据 ...
- linux 目录结构及VIM
目录结构及VIM 文件系统 说明: 文件系统就是操作管理存储设备或分区上的文件的方法和数据结构,也就是存储设备上组织文件的方式. 操作系统中负责管理和存储文件信息的软件机构叫文件管理系统,简称为文件系 ...
- vue项目之购物车
简单的完成一个购物车项目,满足基本功能 安装创建好项目以后需要引入安装elementui和vuex 项目目录如下:(home.vue为主页面) ### ~home.vue <template&g ...
- 微信小程序开发(十)获取手机的经纬度
// succ.wxml <view>经度:{{lon}}</view> <view>纬度:{{lat}}</view> // succ.js var ...