簡體   English   中英

maven更新后Java版本自動更改為java 1.5

[英]Java version automatically change to java 1.5 after maven update

我正在使用 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 構建路徑”更改為“工作區默認 jre 1.8.0_25”
  2. 然后將“java編譯器”更改為1.8
  3. 然后更改“項目方面”> 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。 我怎樣才能解決這個問題?

打開您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM