maven更新后,Java版本自动更改为java 1.5

时间:2015-02-13 22:36:42

标签: java eclipse maven

我使用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. 我改变了#34; Java构建路径"到"工作空间默认jre 1.8.0_25"
  2. 然后改变了" java编译器"到1.8
  3. 然后更改"项目方面"> java> 1.8
  4. 将pom.xml java版本更改为1.8
  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。我该如何解决这个问题?

14 个答案:

答案 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。 enter image description here

因此解决方案是获取包含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;更新项目。