2013-04-08 83 views
21

所以我getting- warning: [options] bootstrap class path not set in conjunction with -source 1.6引導類路徑沒有設置

而且我要問一下3個問題。我明白我需要設置引導類路徑,但我不確定我是如何理解的。一個快速的谷歌剛剛發送給我從Oracle頁面引用的頁面,但我閱讀了Oracle頁面,並沒有感覺到我對它的理解特別好。

我目前在Netbeans上運行這個代碼,所以我所要做的就是點擊播放按鈕來編譯和運行。是否有一個屬性決定如何編譯,以便我可以添加引導類路徑?

另外,對於即將發生的偶然事件,我將使其只能在Netbeans上運行並從命令行運行,那麼使用bootstrap類路徑進行編譯的正確方法是什麼?他們說$ javac -source 6 HelloWorld.java,但只是說明-source 1.6真的是解決方案?

也許是一個更大的問題,我將來如何避免這種警告?如果我理解了一點點,我引用了一個老的java源代碼,因此也提到了老方法。我不知道如何或何時發生。

回答

36

您正在進行交叉編譯。您正在使用JDK 7編譯器爲JDK 6編譯類。這樣可以,但要避免編譯器想要獲得它的問題JDK 6 rt.jar。這背後的原因是,您實際上可能會生成不適用於JDK 6的類,因爲您可能正在使用舊的語言規則(本例中爲1.6),而是使用全新的引導類。例如,一些方法可能不存在於較舊的JDK中。所以你完成了編譯,但是一旦你運行該程序,它可能會炸燬MethodNotFoundException

夫婦的解決方案,你可以隨便挑一個

  • 從JDK 6.指定rt.jar爲什麼不使用舊的編譯器甚至比?
  • 使用JDK 6編譯器(它包含rt.jar)。爲什麼即使使用7,如果不需要7個功能。
  • 忽略警告,並擁有良好的測試覆蓋率,以確保您不使用Java 7個的功能
    • 我不知道有關NetBeans,但在Eclipse中,你也可以說你是對編譯JDK 6因此它贏得了如果您使用Java 7功能,實際上不會進行編譯。
  • 變化的業務需求,並編譯爲Java 7
+1

謝謝,我覺得這個清理了一下 – Stephopolis 2013-04-08 16:47:44

+7

Downvoting,因爲幾個解決方案都沒有給出任何指導如何去做。 – seansand 2014-01-31 17:17:02

+0

@toomasr請理解,回到較舊的JDK很容易在本地機器上工作(MacOs是一個例外btw)。在(大型)公司工作時,您經常無法更改您的JDK。例如,您的開發計算機上必須使用1.7,而您的目標服務器仍然是1.6。當然,您現在可以等到他們(服務器管理員)最終遷移到1.7或者您表現得像專業人員並完成您的工作。你會選擇什麼? – whaefelinger 2014-07-02 09:54:46

1

只要去右擊項目屬性,然後去綁定,並選擇所提供的JDK 1.7使用的是它在你的NetBeans項目特點和這就是你解決問題的原因。這將有助於解決問題併爲我工作。

+0

'綁定'到JDK 1.7如何幫助指定1.6作爲引導類路徑? – 2016-02-10 22:19:15

0

據我所知,我需要設置引導類路徑,但我不知道如何。

在Netbeans 8.0中。2,請訪問:

Run > Set Project Configuration > Customise... 

在分類窗口,請訪問:

Build > Compiling 

底部的字段是 「附加的編譯器選項」,您可以添加:

-bootclasspath /your/path/to/lower/java/version/lib/rt.jar