java - 在 Ubuntu 上安装 Jetty,获取 com.sun.tools.javac.Main 不在类路径上

标签 java ubuntu jetty

我正在尝试在 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/

相关文章:

python - 覆盖在使用 python 3.8 但不是 3.7 的 Windows 上运行非常缓慢

node.js - 我从源代码安装了 Node-12 但无法获取 nodejs --version

mongodb - 如何通过 ssh 隧道将数据保存到远程 mongoDB? (拒绝连接)

java - HTTP 状态 500 - Struts1 中的路径没有操作实例

java - 覆盖 jar 中的属性文件

java - cometd vs pubsub..?

session - 每次刷新页面都会创建一个新的JSESSIONID,但并非所有浏览器都会创建

带有 Web 工具平台的 Eclipse Juno - 本地主机上的 HTTP 预览抛出 NoClassDefFoundError

java - javax.crypto.BadPaddingException:给定最终 block 未正确填充-奇怪的错误

java - Dockerfile 中的 Maven + Java 应用程序