java - Apache tomcat maven 插件在不存在的 Java 版本上编译

标签 java maven javacompiler tomcat8.5

我正在尝试将我的 Maven 项目与 Tomcat 服务器 8.5 集成。没有集成,一切都可以正常工作。我在pom.xml中将maven-compiler-plugin替换为tomcat7-maven-plugin,并做了其他配置。在 mvn install、mvn clean install 和 mvn tomcat7:deploy 之后,一切都失败,出现以下异常。

TestServiceCSV.java:[345,48] strings in switch are not supported in -source 1.5
  (use -source 7 or higher to enable strings in switch)

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)

很明显,编译是使用java 1.5执行的,而我的jdk版本是1.8.0_144。其他详细信息如下:

>mvn -version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T02:58:13-05:00)
Maven home: C:\Maven\apache-maven-3.5.2\bin\..
Java version: 1.8.0_144, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_144\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

>java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

我已将 Eclipse 中安装的 JRE 设置为 JDK。我的项目的构建路径也反射(reflect)了相同的情况。

>echo $MAVEN_HOME
C:\Maven\apache-maven-3.5.2

>echo $JAVA_HOME
C:\Program Files\Java\jdk1.8.0_144

Tomcat版本8.5.23

POM.xml 条目

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>  
<url>http://localhost:8080/manager/html</url>  
<server>TomcatServer</server>    
<username>admin</username>  
<password>xxxx</password>   
</configuration>
</plugin>

为什么编译是在1.5而不是实际版本上进行的?

最佳答案

Default source level编译器插件的版本是1.5。 compiler:compile 目标绑定(bind)到 default lifecyclecompile 阶段。 。您始终必须设置 source and target如果您想使用版本 6 及以上的高级语言功能,请升级至 4.0 级。

关于java - Apache tomcat maven 插件在不存在的 Java 版本上编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47280219/

相关文章:

Java - 无法从网站获取 HTML 纯文本

java - 我怎样才能获得工作 Selenium

java - Google Maps v2 MapFragment 在从后台返回时非常滞后

java - 为什么 Set 允许在这里重复?

java - Spring Project 如何显示语言

java - 正则表达式 cucumber 小 cucumber 用于数字 float

java - 如何使 Maven Javadoc 插件适用于任何 Java 版本

java - 为什么 JavaCompiler 在实例化 Java 类时速度很慢?

java - 从 java 代码中运行已编译的 java .class 文件并捕获输出

JavaCompiler API - 在 tomcat 中运行时编译速度慢