我正在尝试在 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,这就是这里失败的原因。
非常感谢任何线索。谢谢!
最佳答案
虽然您正在导出一个新的 JAVA_HOME 环境变量,但我没有看到您也在导出一个新的 PATH 环境变量。您可能仍在从原始 Java 主目录位置获取 java
可执行文件。尝试包含 export PATH=$JAVA_HOME/bin:$PATH
。
关于java - 在 Ubuntu 上安装 Jetty,获取 com.sun.tools.javac.Main 不在类路径上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894733/