簡體   English   中英

在Ubuntu上安裝Jetty,獲取com.sun.tools.javac.Main不在類路徑上

[英]Installing Jetty on Ubuntu, getting com.sun.tools.javac.Main is not on the classpath

我正在嘗試在Ubuntu 11.04上安裝Jetty而我正要拔掉頭發。 我遇到了類路徑問題。 我用start.jar啟動Jetty,將JAVA_HOME設置為指向JDK。

/usr/share/jetty$ export JAVA_HOME=/usr/lib/jvm/java-6-sun
/usr/share/jetty$ java -jar start.jar 

[...]

com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-6-sun-1.6.0.26/jre"

    at org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:127)
...

請注意,它忽略了我設置的JAVA_HOME,並使用了jre。 我也試過這個:

java -classpath /usr/lib/jvm/java-6-sun/lib/tools.jar -jar start.jar

相同的錯誤消息。 它沒有找到,com.sun.tools.javac.Main,那是在tools.jar中。

在Jetty的內心深處,當它試圖編譯我的.jsp時,它正在使用Ant,而且我正在做一些類加載器技巧,我猜。 有誰知道告訴這個胡思亂想的軟件可以找到我的tools.jar文件的秘訣是什么?

請注意,我在sun jdk和openjdk中遇到了同樣的錯誤,是的,我確實安裝了JDK,而不僅僅是JRE。

apt-get安裝java的方式,JDK的Java二進制文件指向JRE。 像這樣:

ls -alph /usr/lib/jvm/java-6-sun/bin/java
lrwxrwxrwx 1 root root 15 2011-10-25 18:48 /usr/lib/jvm/java-6-sun/bin/java -> ../jre/bin/java

我猜測Jetty,Jasper或Ant會嘗試根據java可執行文件的位置找到tools.jar,這就是失敗的原因。

任何線索都非常感謝。 謝謝!

您可以將tools.jar添加到JVM的引導類路徑中:

java -Xbootclasspath/p:/usr/lib/jvm/java-6-sun/lib/tools.jar -jar start.jar

盡管您正在導出新的JAVA_HOME環境變量,但我看不到您也在導出新的PATH環境變量。 您可能仍在從原始Java主目錄中拾取java可執行文件。 嘗試包括export PATH=$JAVA_HOME/bin:$PATH

由於評論在SO上是不可讀的,這里是您要求的信息:

$ lsb_release -s -c
natty

我像這樣安裝了sun JDK,但請記住,openjdk發生了相同的錯誤。

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get -y install sun-java6-jdk
sudo update-alternatives --config java

我很確定配置運行start.jar的環境是在錯誤的軌道上,因為我對此進行了非常努力的嘗試,卻一無所獲。

Jetty調用的Jasper,它調用編譯JSP的Ant任務。 在Ant的org / apache / tools / ant / taskdefs / Javac.java的源代碼中 ,您可以看到它在哪里設置類路徑。

我的問題可能與傳遞或不傳遞環境變量有關,也可能與該鏈中的java系統屬性有關。

丑陋的解決方案

只是為了笑,我創建了從/usr/lib/jvm/java-6-sun/lib/tools.jar到/ usr / lib / jvm / java-6-sun / jre / lib / ext的符號鏈接。 丑陋吧? 但是,它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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