`
xfxlch
  • 浏览: 166015 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

记一次mvn compile error问题

阅读更多
背景:
我们的项目通过maven来管理,构建。在一次项目构建中出现如下的错误:
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.192 s
[INFO] Finished at: 2015-12-31T16:53:26+08:00
[INFO] Final Memory: 16M/48M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project xxx-web: Compilation failure
[ERROR] /c:/Users/a574539/Perforce/clu_HZ47P4498186_3323/xxx-web/2.4.0/src/main/java/com/xx/xx/xx/service/xxClientService.java:[1015,79]
 strings in switch are not supported in -source 1.5
[ERROR] (use -source 7 or higher to enable strings in switch)
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException


分析:
很显然是说的这个问题:
strings in switch are not supported in -source 1.5

代码中出现了jdk1.5 支持不了的语法。导致编译不了,出错。

查看了代码有这么一段:
switch(String.valueOf(product.get(selectedColumn.get(i)))){
	case "EQ":
	primaryAssetClass = "Equity";
	break;
	case "FX":
	primaryAssetClass = "ForeignExchange";
	break;
	case "IR":
	primaryAssetClass = "InterestRate";
	break;
	case "COM":
	primaryAssetClass = "Commodity";
	break;
	default:
	primaryAssetClass = "";
	break;
}



那么为什么mvn compile 默认是用的jdk1.5的版本呢。答案在这里:http://maven.apache.org/plugins/maven-compiler-plugin

引用
Also note that at present the default source setting is 1.5 and the default target setting is 1.5, independently of the JDK you run Maven with. If you want to change these defaults, you should set source and target as described in Setting the -source and -target of the Java Compiler


默认在没有给pom配compiler-plugin的情况下,maven就用的是1.5版本的jdk,如果要改就要加maven-compiler-plugin,并且指定jdk为1.7 或更高,不管怎么样就要是支持String在switch里的语法就可以了。
加了如下代码,mvn compile就可以成功了。
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>3.1</version>
	<configuration>
	<source>1.7</source>
	<target>1.7</target>
	</configuration>
</plugin>


PS:
1。   如果你不知道mvn 在compile的时候,用了什么版本的jdk, 那么mvn提供了一个参数用以支持debug 模式。
命令如下:
mvn clean compile -X

可以看到debug 信息如下:
-g -nowarn -target 1.5 -source 1.5 -encoding UTF-8


你可以看到:
-g -nowarn -target 1.5 -source 1.5 -encoding UTF-8

而如果你指定了jdk1.7 之后,就变成下面这样子了。
 -g -nowarn -target 1.7 -source 1.7 -encoding UTF-8


2。mvn命令行的一些参数可以参考:http://jan.baresovi.cz/dr/en/maven-command-line

--EOF--
分享到:
评论

相关推荐

    java8集合源码-ucsb-cs56-dogwalker:遛狗器/游戏日期匹配器

    要运行,通常的步骤mvn compile exec:java然后访问http://localhost:4567是一个好的开始。 但是,您会收到此错误消息: Error: Must define env variable MONGODB_USER Error: Must define env variable MONGODB_...

    maven:用于推送pom.xml文件

    常用的Maven命令包括`mvn clean`(清理目标目录)、`mvn compile`(编译源代码)、`mvn test`(运行测试)、`mvn package`(打包项目)、`mvn install`(将项目安装到本地仓库)和`mvn deploy`(部署到远程仓库)。...

    works-model:工作模型

    Make sure project no compile error 2. mvn install to download dependency via Maven 构建和部署 1. Maven mvn clean install -Dmaven.test.skip=true -X &gt; install.log mvn dependency:copy-dependencies

    MAVEN-3.5.4,需要jdk7及以上版本

    开发者可以通过执行对应的命令如`mvn clean compile`来执行特定阶段。 6. **插件系统** Maven的插件系统允许扩展其功能,例如使用maven-compiler-plugin进行Java代码编译,maven-surefire-plugin进行单元测试,...

    aspose-words-15.8.0-jdk16.zip

    4. **Maven命令**:如`mvn install`用于将项目安装到本地仓库,`mvn clean compile`用于清理并编译项目,`mvn package`用于打包项目等。 5. **远程仓库**:除了中央仓库,还可以配置私有或第三方仓库,如公司的内部...

    mavenexample

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project broken: Fatal error compiling: java.lang.IllegalAccessError: class lombok.javac...

    ArthasHotSwap:此存储库是Intellij IDEA的插件,可以帮助您无需任何配置和调试即可实现热插拔。进行,只需几个简单动作就能完成)

    热部署使用的是类文件,因此需要先使用“ mvn compile”编译相关工程,后续可以使用IDEA的重新编译编译文件,节省编译时间。选择需要热部署的javasource文件或者类文件,在类名或方法名上快捷快捷键,选择“ Arthas ...

    maven已编译包

    - **聚合与继承 (Aggregation & Inheritance)**:通过继承,子项目可以共享父项目的配置,而聚合则可以一次性构建所有子项目。 - **更完善的依赖解析 (Enhanced Dependency Resolution)**:引入了依赖范围(scope)...

    master-MavenHappyPathTest-Maven-build-error-test-c594fdb-256:说明

    综上所述,"master-MavenHappyPathTest-Maven-build-error-test-c594fdb-256"是一个关于Java项目中使用Maven构建时遇到的问题,涉及到POM配置、依赖管理、测试执行和版本控制等多个方面。解决这个问题需要对Maven的...

    idea出现maven问题或者插件报红问题汇总

    在遇到问题时,先执行`mvn clean`清理项目,然后尝试`mvn install`重新构建,这可以帮助解决临时的缓存问题。 9. **检查JDK版本**: 确保你的JDK版本与Maven和IDEA兼容,有时候不同版本之间的不兼容性会导致问题...

    mybatis-generator-1.3.4

    Mybatis Generator是一个强大的工具,它允许开发者自动生成Mybatis的SQL映射文件、Java模型类以及DAO接口。在本文中,我们将深入探讨Mybatis Generator 1.3.4版本,了解其在Eclipse中的使用方法,以及如何通过逆向...

    Maven的下载、安装、配置与相关项目

    通过Maven命令(如`mvn clean`、`mvn compile`、`mvn test`、`mvn package`等)来执行这些阶段。 #### 六、Maven与IDE的集成 Maven可以很好地集成到各种Java IDE中,比如Eclipse、IntelliJ IDEA等。以下以Eclipse...

    WebSocketChat

    4. **运行与测试**:可能有一个`README.md`文件,指导用户如何运行项目,例如通过`mvn compile exec:java`命令启动服务器,并在浏览器中打开`chat.html`参与聊天。 为了实现WebSocketChat,开发者需要考虑以下几个...

    iteye的技术博客集合

    - **在命令行中运行 “mvn compile” 因为中文报错**:这部分内容提供了在使用 Maven 时如何避免因中文路径导致的编译错误。 - **JSP 获取 spring 的容器 ApplicationContext**:这部分介绍了如何在 JSP 页面中获取 ...

    apache-maven-3.6.3.rar,maven资源包

    - **生命周期**:Maven有一套预定义的构建生命周期,包括clean(清理)、compile(编译)、test(测试)、package(打包)、install(安装)和deploy(部署)等阶段。 - **插件**:Maven通过插件执行各种构建任务,...

    Tapestry字典0.1.pdf

    **5.11 部分分页显示(不一次从数据库中提出全部记录)** - **实现**: 在服务端实现按需加载数据的逻辑。 - **示例**: 分页查询数据库。 **5.12 使用缓存** - **实现**: 使用Tapestry内置的缓存机制来提高性能。 - ...

    javacv-platform-1.3.3-src

    compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.3.3' } sbt (inside the build.sbt file) libraryDependencies += "org.bytedeco" % "javacv-platform" % "1.3.3" This downloads ...

Global site tag (gtag.js) - Google Analytics