繁体   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