2013-03-04 109 views
0

時當我嘗試使用Ant來構建我的項目生成的Java Ant腳本,我得到: 「java.lang.NoClassDefFoundError:太陽/組織/ Mozilla瀏覽器/ JavaScript的/內部/腳本化」問題鏈接到犀牛

這源於我使用Rhino(Oracle JDK附帶的捆綁java腳本)

  • 當我使用eclipse構建項目時,一切正常。
  • 我使用的ant文件是由eclipse生成的,並且除了java腳本依賴關係以外,還能正常工作。
  • 這些依賴關係位於Oracle JDK附帶的RT.jar中。
  • 我已經嘗試jdk6_0_u41和jdk7,都給出了相同的結果:在日食中的成功,與螞蟻失敗。
  • 我試圖建立在兩個Ubuntu的10和12

我見過這似乎unacceptible給我另外兩個建議:

  • 一個線程建議複製的rt.jar到項目的lib目錄。 (RT是整個java運行庫!)
  • 另一個線程提示我不應該使用:sun/org/mozilla/javascript/internal。但由於我正在進行高級操作(調用對象方法,註冊回調等),我沒有選擇使用sun.org.mozilla.javascript.internal類的家庭。
+0

隱藏原來的犀牛類是螞蟻使用相同的構建類路徑?考慮使用你自己的Rhino實現。 Java使[不保證](http://stackoverflow.com/a/6089959/304)關於哪些腳本引擎隨不同版本/實現提供。 – McDowell 2013-03-04 13:11:02

+0

Ant文件是由eclipse生成的,所以我假定它使用相同的類路徑。除此之外,我只在生成機器上安裝了一個jdk(我竭盡全力確保openJDK未安裝)。因此,如果沒有JDK提供的RT.jar,java編譯器鏈接甚至是可能的? – eshalev 2013-03-05 07:09:47

回答

0

從Oracle的網站上留言:

Users should not write code that depends on internal JDK implementation classes. Such classes are internal implementation details of the JDK and subject to change without notice.

This is not a compiler issue. javac is behaving correctly, according to the information provided in ct.sym.

The issue belongs with those who decide what should be available with (and what should be hidden by) ct.sym

您可能會建議包括Rhino's jar到項目,並重新指向它在哪裏「內部」不是從用戶