Java 版本在 maven 更新后自动转换为 Java 1.5

我使用 Eclipse 作为 IDE。当我右键单击项目,然后单击 maven 更新我的 java 版本改为1.5。以下是我到目前为止所做的,我按照这里列出的所有步骤进行操作

Http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires-java-1-6-or-newer-in-maven-projects/

  1. 我将“ Java 构建路径”更改为“ workspace default jre 1.8.0 _ 25”
  2. 然后将“ java 编译器”改为1.8
  3. 然后更改“ project facets”> java > 1.8
  4. 将 pom.xml java 版本更改为1.8
    <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。我该怎么补救?

124527 次浏览

打开 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 的回答

我有个问题。在我的例子中,Jorge Campos 提到的 < properties > tag & nested 标签放错了地方。如果我将它们放在 pom.xml 文件中的 < hostversion > 和 < Dependency > 标记之间,那么这种行为就会停止。

如果打开这些文件的验证,则可以在 Eclipse 中获取。

我在一个队友的机器上遇到了类似的问题。他用的是老版本的 Eclipse 我相信他用的是 Keppler。项目更新后,将 JRE 版本更改为1.5。

简单地将 Eclipse 更新到最新版本就可以解决这个问题。

我将 Eclipse 从 Kepler 更改为霓虹灯,然后使用 Maven-> Update Project 更新我的项目。

将这几行添加到 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>

此问题的根本原因是,如果在生成/更新。类路径文件,它将默认使用 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 忽略该属性并使用默认值。

这又回到了我开始时提到的“ 不管什么原因”部分; 开发人员的愚蠢可能是原因之一。

我安装 Java9时也有同样的问题。我的项目将默认为 J2SE-1.5执行环境。奇怪的是,Java9遵从级别不像以前的版本(即“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及以上。

我允许自己用 Java11来更新这个主题。

我已经在我的电脑上安装了 OpenJDK11,我想在一个应用程序中使用它。

我遇到了麻烦,因为当我用 Maven 更新我的项目时,Eclipse 总是将我的 JRE 更改为 JavaSE-1.5。

我已经按照您所说的设置了所有内容,但是我总是直接在 Java 构建路径“ Java-11-openjdk”中进行选择。X86 _ 64”作为我的交替 JRE 之一。我通过选择“ Execution Environment”JavaSE-10(但是您必须双击它,然后选择兼容的 JRE 您的 OpenJDK11版本)来解决我的问题,如图所示。 执行环境设置

多亏了这张图片,该项目将使用 Java 11,但是您必须在 pom.xml 中为 Java 版本编写10,并在 Project Facets 中设置 Java 10。

在我的例子(旧的 JBoss Developer Studio)中,问题是 JRE 环境不包括1.8(只有1.7)。当我将 maven-compiler-plugin版本切换到1.7并进行 maven 更新项目时,它将 Eclipse JRE 系统库更新到1.7。 enter image description here

因此,解决方案是要么获得包含内置 JRE 环境(1.8或更高版本)的更新的 IDE 版本,要么尝试手动安装它(参见 https://stackoverflow.com/a/35204314)

我已经解决了从市场上安装 Eclipse 更新“ JAVA 12”的问题。 它使我的日食从开普勒传递到月球。

之后,我能够将1.8设置为标准的 JDK,修复了“ maven update”问题。

我正在使用 Java11。 这是添加之后完整的 pom.xml 文件的样子 <properties><plugin>

<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>

上面的代码对我很有用。 希望对你也有用。

我经历了 JRE15.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>

这个解决方案解决了我的问题。

<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>

我在我的“ pom.xml”文件中添加了这些代码行,它起作用了。