2014-11-21 44 views
3

我需要使用Java 6,但即使在完成所有配置之後,NetBeans也不會使用它。它繼續運行Maven,併爲我的IDE提供Java 8的默認值。在Eclipse上相同的配置運行良好,所以我不明白我做錯了什麼。如何在NetBeans 8的Maven項目中使用較舊版本的Java(非默認值)

我不想在nb-configuration.xml中定義編譯器,因爲我必須提交該文件。我希望NetBeans能夠從POM中獲得它。

一般資料:

  • 我爲了工作
  • 使用Maven 3.2.3使用Java的8
  • NetBeans的8只需要JDK 7+運行的NetBeans 8.0.1(完全更新)但嵌入式(的Maven 3.0.5沒有工作,以及)
  • 所有Maven插件都是最新

要重現只需創建一個Maven幻燈任何類型的NetBeans ct。在我的情況下,我嘗試了Java,Web和EJB,但都沒有成功。

下圖顯示了JDK已正確添加到IDE中。

工具>的Java平臺

JDK 1.6的溶液。我曾嘗試

enter image description here

POM配置:

屬性

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

編譯器插件

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
    </plugin> 

強制實施插件

強制實施的Java 6提供了以下錯誤:

Detected JDK Version: 1.8.0-25 is not in the allowed range [1.6,1.7). 
------------------------------------------------------------------------ 
BUILD FAILURE 

配置的實施者:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-enforcer-plugin</artifactId> 
     <version>1.3.1</version> 
     <executions> 
      <execution> 
       <id>enforce-versions</id> 
       <goals> 
        <goal>enforce</goal> 
       </goals> 
       <configuration> 
        <rules> 
         <requireJavaVersion> 
          <version>[1.6,1.7)</version> 
         </requireJavaVersion> 
        </rules> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 

測試代碼的Java 6

下面的代碼應該不是 comp ILE:

import java.nio.file.Files; 
import java.time.LocalTime; 

public class JavaVersionChecker { 

    public static void main(String[] args) { 

     System.out.println(Files.class); // Java 7 API 
     System.out.println("Time: " + LocalTime.now()); // Java 8 API 

     // Print Java version 
     System.out.println(System.getProperty("java.version")); 
    } 

} 

測試輸出

測試代碼編譯的Java 7和8 API,但只有Java 6中應該被接受。

------------------------------------------------------------------------ 
Building java6_project 1.0-SNAPSHOT 
------------------------------------------------------------------------ 

--- exec-maven-plugin:1.2.1:exec (default-cli) @ java6_project --- 
class java.nio.file.Files 
Time: 19:24:05.997 
1.8.0_25 
------------------------------------------------------------------------ 
BUILD SUCCESS 
------------------------------------------------------------------------ 
Total time: 0.610 s 
Finished at: 2014-11-21T19:24:06-02:00 
Final Memory: 6M/123M 
------------------------------------------------------------------------ 

JDK 6應由IDE來檢測

enter image description here

+0

請注意1.6也滿足1.8。 – mkleint 2014-11-22 03:44:29

+0

我也不確定「portable」是什麼意思,是「我不想做任何IDE特定的設置」?那麼你的問題沒有解決辦法。不過,有一些方法可以一次性完成設置,並在項目和同事之間共享(因此只需設置一次)。如果你閱讀了在nb-configuration.xml中生成的內容,它會給你一個提示。 – mkleint 2014-11-22 03:47:55

+0

@mkleint對於你的拳頭評論,我用正確的conf來編輯了這個問題。 TX。 – BonanzaOne 2014-11-22 13:36:39

回答

3

如所建議的通過我提出使用暗示屬性,這也是很好的記錄在配置工作的意見生成的nb-configuration.xml

配置添加到pom.xml中:

<properties> 
    <netbeans.hint.jdkPlatform>JDK_1.6</netbeans.hint.jdkPlatform> 
</properties> 

據我瞭解需要由專用的參數,這是建立非常簡單的設置編譯版本的NetBeans。

有用的NB-configuration.xml文件的詳細信息:

Properties that influence various parts of the IDE, especially code formatting and the like. You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up. That way multiple projects can share the same settings (useful for formatting rules for example). Any value defined here will override the pom.xml file value but is only applicable to the current project.

0

此錯誤是由在NB-configuration.xml文件中的舊條目引起

剛剛添加該屬性的pom.xml由@BonanzaOne的建議沒有爲我工作。

通過在NB-configuration.xml文件改變

<netbeans.hint.jdkPlatform>JDK_1.6.0_34</netbeans.hint.jdkPlatform> 

<netbeans.hint.jdkPlatform>JDK_1.6</netbeans.hint.jdkPlatform> 

直接,Netbeans的採現有JDK 1.6 automaticaly。

相關問題