[英]Java version automatically change to java 1.5 after maven update
我正在使用 Eclipse 作为 IDE。 当我右键单击该项目,然后单击 Maven 更新我的 java 版本更改为 1.5。 这是我到目前为止所做的,我遵循了这里列出的所有步骤
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.1.3.v20140225</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugin</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
毕竟,当我单击“Maven 更新”时,我的 java 版本会自动更改为 1.5。 同样在上述步骤中,前两步的版本也会自动更改为 1.5。 我怎样才能解决这个问题?
打开您的pom.xml
文件并在其上添加以下行:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
其中1.8
是当前 JDK/JRE 的 Java 版本。 另一种方法是使用maven-compile-plugin
添加一个<build>
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version> <!-- or whatever current version -->
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
如果您正在寻找一种使其适用于 Java 9+ 版本的方法,请查看@JDelorean 的答案。
当我安装 Java 9 时遇到了同样的问题。我的项目将默认为 J2SE-1.5 执行环境。 奇怪的是,Java 9 的合规级别并没有像以前的版本(即“1.8”)那样被引用,而是被称为“9”。 所以我必须相应地提供我的属性和 Maven 编译器插件配置:
<properties>
<maven.compiler.source>9</maven.compiler.source>
<maven.compiler.target>9</maven.compiler.target>
</properties>
和
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>9</source>
<target>9</target>
</configuration>
</plugin>
这似乎解决了这个问题。 适用于版本 9 及更高版本。
此问题的根本原因是,如果 Eclipse 在从 pom 生成/更新 .classpath 文件时由于任何原因无法解析maven.compiler.source
属性的有效值,它将默认使用org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5
。
正如@jorge-campos专业回答的那样,有多种方法可以设置该属性。
但是,豪尔赫的回答似乎对我不起作用。 这是我的设置:
<properties>
<javaVersion>1.8</javaVersion>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
...
确切地。 ${java.version}
永远不会解析为(完全不同的)属性javaVersion
并且 Eclipse 忽略了该属性并使用了默认值。
这让我回到了我打开的“出于任何原因”部分; 开发人员的愚蠢可能是这些原因之一。
将此行添加到您的 pom.xml,然后右键单击您的 JRE 系统库 -> 属性 -> 将正确的执行环境设置为 Java 1.8 或要设置的版本。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version> <!-- or whatever current version -->
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
我在我的一台队友机器上遇到了类似的问题。 他使用的是旧版本的 Eclipse,我相信他使用的是 Keppler。 更新后的项目将 JRE 版本更改为 1.5。
简单地将 Eclipse 更新到最新版本即可解决此问题。
就我而言(旧的 JBoss Developer Studio),问题是 JRE 环境不包括 1.8(只有 1.7)。 当我将maven-compiler-plugin
版本切换到 1.7 并进行 maven 更新项目时,它会将 Eclipse JRE 系统库更新到 1.7。
因此,解决方案是要么获取包含 1.8 或更高版本的内置 JRE 环境的更新 IDE 版本,要么尝试手动安装它(请参阅https://stackoverflow.com/a/35204314 )
我有这个问题。 在我的例子中,上面提到的 <properties> 标签和嵌套标签 Jorge Campos 放错了地方。 如果我将它们放在 pom.xml 文件中的 <hostversion> 和 <dependencies> 标记之间,那么这种行为就会停止。
如果打开了对这些文件的验证,则可以在 Eclipse 中获取。
我正在使用 Java 11。这是添加<properties>
和<plugin>
后完整 pom.xml 文件的样子
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.akshay</groupId>
<artifactId>1000SpringSecurityEg</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>1000SpringSecurityEg Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<javaVersion>11</javaVersion>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<build>
<finalName>1000SpringSecurityEg</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
上面的代码对我有用。 希望它也适用于你。
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
我在我的“pom.xml”文件中添加了这些行并且它起作用了。
我允许自己使用 Java 11 更新该主题。
我已经在我的计算机上安装了 OpenJDK11,我想在应用程序中使用它。
我遇到了麻烦,因为当我使用 Maven 更新我的项目时,Eclipse 总是将我的 JRE 更改为 JavaSE-1.5。
我已经按照您所说的设置了所有内容,但我总是直接在我的 Java 构建路径“java-11-openjdk.x86_64”中选择作为我的备用 JRE 之一。 我通过在“执行环境”JavaSE-10 中选择来解决我的问题(但您必须双击它,然后选择 OpenJDK11 版本作为兼容的 JRE),如图所示。 执行环境设置
由于该(图片),该项目将使用 Java 11,但您必须在 pom.xml 中为 java-version 编写 10,并在 Project Facets 上设置 java 10。
我已经解决了从市场上安装 Eclipse 更新“JAVA 12”的问题。 它使我的日食从开普勒传递到月球。
之后,我能够将 1.8 设置为标准 JDK,修复“maven 更新”问题。
我体验过 JRE 15.0.1 必须只指定编译器插件,如
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>15</source>
<target>15</target>
</configuration>
</plugin>
如果我还提供类似的属性
<properties>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
</properties>
这将在Maven / Update Project
上再次重置为 JRE 1.5 !!!
如果有任何带有此maven.enforcer.plugin.version
的标签,请在属性下检查pom.xml
。 删除它并用下面的代码替换它
<javaVersion>1.8</javaVersion>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
在属性标签下。
在构建下,用以下代码替换插件:
<build>
<finalName>1000SpringSecurityEg</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
这个解决方案解决了我的问题。
我将 Eclipse 从 kepler 更改为 neon,然后使用 Maven -> Update Project 更新了我的项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.