MAVEN 编译打包时报“.....找不到符号” 的处理方法总结
2017-08-28 17:41
1641 查看
这个错都是在MAVEN插件在编译的时候报的,所以问题一定是出在编译的环节上。
这个时候就要好好检查MAVEN的编译配置,
1、看看配置里的编译版本和本机环境上配置的java版本是否一致,有时候报错的类有可能是引用了另外另外一个MAVEN模块的代码,也要看看那个模块的版本配置编码是否一致。但这并不是一定的,有时候不一致也不会有问题,但这是一个可以注意的点。
例如下图情况:
2、如果报错的类里面有引用了另外一个MAVEN模块的代码,那么在打这个模块的包之前,最好先编译打包一下那个要引用的MAVEN模块。
3、还有可能是编译插件版本的问题,例如刚刚上面的MAVEN插件配置,在出问题的时候可以尝试把版本调低或者调高,然后再编译试试。
4、还要看看编译插件里面是否还有引用了其它的插件,例如下面情况所示:
这里的编译插件还引用了mapstruct依赖,所以要检查一下这个引用的依赖版本是否有问题,可以尝试更换其它版本。
最近我遇到的一个问题就是出在这里。我的工程里面有一个DTO类,然后在另外一个impl类里面会调用这个DTO类某个属性的set方法,就是在编译这个impl类的时候,报了找不到符号,报错的位置就是这个set方法的位置。后来试了好多方法都不行,最后发现原来这是mapstruct的一
9368
个bug,如果我这个DTO类的getter和setter方法的顺序与属性的顺序不一致的话,就会编译失败。例如类里面的属性先是name,下一行就是age,再下一行就是habbit,那么getter,setter方法也要按这个顺序,先是name的getter,setter方法,然后再是age的getter,setter方法,等等。我就是有个组getter,setter方法顺序不对,所以编译出错了。这真的是非常坑。
所以用这些开源的插件,尽量用稳定版本,不然怎得非常坑。
5、简单粗暴地使用“Maven Update Project”,这个方法能解决大部分情况下的这个问题。
以上就是最近的总结了,如有不当之处,欢迎指出。
转载请标明出处:http://www.cnblogs.com/Starshot/p/7441075.html
这个时候就要好好检查MAVEN的编译配置,
1、看看配置里的编译版本和本机环境上配置的java版本是否一致,有时候报错的类有可能是引用了另外另外一个MAVEN模块的代码,也要看看那个模块的版本配置编码是否一致。但这并不是一定的,有时候不一致也不会有问题,但这是一个可以注意的点。
例如下图情况:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin>
2、如果报错的类里面有引用了另外一个MAVEN模块的代码,那么在打这个模块的包之前,最好先编译打包一下那个要引用的MAVEN模块。
3、还有可能是编译插件版本的问题,例如刚刚上面的MAVEN插件配置,在出问题的时候可以尝试把版本调低或者调高,然后再编译试试。
4、还要看看编译插件里面是否还有引用了其它的插件,例如下面情况所示:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <annotationProcessorPaths> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin>
这里的编译插件还引用了mapstruct依赖,所以要检查一下这个引用的依赖版本是否有问题,可以尝试更换其它版本。
最近我遇到的一个问题就是出在这里。我的工程里面有一个DTO类,然后在另外一个impl类里面会调用这个DTO类某个属性的set方法,就是在编译这个impl类的时候,报了找不到符号,报错的位置就是这个set方法的位置。后来试了好多方法都不行,最后发现原来这是mapstruct的一
9368
个bug,如果我这个DTO类的getter和setter方法的顺序与属性的顺序不一致的话,就会编译失败。例如类里面的属性先是name,下一行就是age,再下一行就是habbit,那么getter,setter方法也要按这个顺序,先是name的getter,setter方法,然后再是age的getter,setter方法,等等。我就是有个组getter,setter方法顺序不对,所以编译出错了。这真的是非常坑。
所以用这些开源的插件,尽量用稳定版本,不然怎得非常坑。
5、简单粗暴地使用“Maven Update Project”,这个方法能解决大部分情况下的这个问题。
以上就是最近的总结了,如有不当之处,欢迎指出。
转载请标明出处:http://www.cnblogs.com/Starshot/p/7441075.html
相关文章推荐
- maven:打包时报错,报’找不到符号’
- maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理 maven找不到符号
- maven编译项目时报异常,找不到符号
- Maven编译打包出错:找不到符号
- jenkins 用 Maven 打包出现 找不到符号 问题的解决方法
- maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理 maven找不到符号
- IDEA Maven打包时报找不到符号错误
- Javac编译找不到符号(解决方法)
- maven编译提示软件包找不到符号
- maven 打包方法总结
- android ant编译, 找不到符号: 方法 setRoundingMode(java.math.RoundingMode) ,编译失败
- 静态库资源文件、xib、图片打包处理,编译生成的静态库.a包文件太大缩小解决方法
- 记录一下自己总结出来的,在内网环境下使用maven打包的各种方法,包括各种常用的打包方式(一)
- maven编译时报错:致命错误: 在类路径或引导类路径中找不到程序包 java.lang
- Intellij Idea Maven工程编译时无法关联lib文件夹中的第三方jar包,运行时报错找不到类
- maven编译提示软件包找不到符号
- Maven 打包时报Fatal error compiling: tools.jar not found错误的问题处理
- 解决Maven编译(maven install)时,出现的“找不到符号”的问题
- maven打包编译的异常 :sun.misc.BASE64Decoder 是 Sun 的专用 API,可能会在未来版本中删除的解决方法
- 成功将log4cpp升级到了vs2005版本,总结下编译时报错及相应的解决方法