我使用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>
毕竟当我点击&#34; Maven update&#34;我的java版本自动更改为1.5。同样在上述步骤中,前两步的版本也会自动更改为1.5。我该如何解决这个问题?
答案 0 :(得分:169)
打开您的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版本。另一种方法是使用<build>
作为
maven-compile-plugin
<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's answer ,不要忘记给他一个upvote:)
答案 1 :(得分:13)
安装Java 9时遇到同样的问题。我的项目默认为J2SE-1.5执行环境。奇怪的是,Java 9合规级别不像以前的版本那样被引用,即&#34; 1.8&#34;,而是&#34; 9&#34;。所以我必须相应地提供我的属性和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>
这似乎解决了这个问题。
答案 2 :(得分:4)
此问题的根本原因是,如果因任何原因,则在生成时,Eclipse无法解析maven.compiler.source
属性的有效值/从pom更新.classpath文件,它将默认使用org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5
。
正如@jorge-campos所熟知的那样,有多种方法可以设置该属性。
然而,Jorge的回答并没有出现为我工作。这是我的设置:
<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忽略该属性并使用默认值。
这让我回到了&#34; 因任何原因&#34;我打开的部分;开发人员的愚蠢可能是其中一个原因。
答案 3 :(得分:2)
将此行添加到您的pom.xml,然后右键单击您的JRE系统库 - &gt;属性 - &gt;将正确的执行环境设置为要设置的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>
答案 4 :(得分:1)
我有这个问题。就我而言,&lt; properties&gt;标签&amp;嵌套标签Jorge Campos上面提到的是错误的地方。如果我把它们放在&lt; hostversion&gt;之间和&lt;依赖关系&gt; pom.xml文件中的标记,然后此行为停止。
如果打开了对这些文件的验证,可以在Eclipse中选择。
答案 5 :(得分:1)
我在我的队友机器上遇到了类似的问题。他使用的是旧版Eclipse,我相信他正在使用Keppler。更新后的项目将JRE版本更改为1.5。
简单地将Eclipse更新到最新版本可以解决这个问题。
答案 6 :(得分:1)
我使用的是 Java 11。
这是添加后完整的 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>
上面的代码对我有用。 希望它也适用于您。
答案 7 :(得分:0)
我允许自己使用Java 11更新该主题。
我已经在计算机上安装了OpenJDK11,我想在应用程序中使用它。
我遇到了麻烦,因为当我用Maven更新项目时,Eclipse总是会将我的JRE更改为JavaSE-1.5。
我已经按照您所说的进行了所有设置,但是我总是一直在Java构建路径“ java-11-openjdk.x86_64”中直接选择我的Alternante JRE之一。如图所示,我通过在“执行环境”中选择JavaSE-10(但您必须双击它,然后选择OpenJDK11版本作为兼容的JRE)解决了我的问题。 Execution environment setup
由于该图片,该项目将使用Java 11,但是您必须在pom.xml中为Java版本编写10,并在Project Facets上设置Java 10。
答案 8 :(得分:0)
就我而言(旧的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)
答案 9 :(得分:0)
我已经解决了从市场上安装Eclipse更新“ JAVA 12”的问题。 这使我的日食从开普勒传到了露娜。
之后,我已经能够将1.8设置为标准JDK,解决了“行家更新”问题。
答案 10 :(得分:0)
我在 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
!!!
答案 11 :(得分:0)
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
我在“pom.xml”文件中添加了这些行并且它起作用了。
答案 12 :(得分:-1)
如果有任何带有此 pom.xml
的标记,请检查属性下的 maven.enforcer.plugin.version
。删除它并用下面的代码替换它
<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>
此解决方案解决了我的问题。
答案 13 :(得分:-3)
我将Eclipse从kepler更改为neon,然后使用Maven更新了我的项目 - &gt;更新项目。