【问题标题】:unable to find javac compiler from an executable jar无法从可执行 jar 中找到 javac 编译器
【发布时间】:2013-10-08 13:44:05
【问题描述】:

我正在开发一个简单的 java 编辑器,它使用 ant 来调用 JDK

在 Eclipse 上一切正常,我能够构建 build.xml。问题是当我将编辑器导出到 executable jar 并尝试构建项目的 build.xml 时,我遇到了著名的问题:

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\Program Files (x86)\Java\jre7"

重要:

如果我从 cmd 运行我的 jar Editor 可以正常工作,但是如果我双击 Editor jar 它就不起作用,我遇到了著名的问题(无法找到 javac 编译器...)。

注意:

  1. JAVA_HOME 指向 JDK

  2. 我正在使用 ant.jarant-launcher.jar

  3. Eclipse 指向我的 JDK 安装。

  4. tools.jar 已添加到 JDK/lib 文件夹中

【问题讨论】:

  • "可能 JAVA_HOME 不指向 JDK。" - 看起来您的 JAVA_HOME 指向 JRE 安装而不是 JDK。 JRE 不附带 javac 和其他开发工具。改变你的JAVA_HOME环境变量,重启eclipse,应该就好了。
  • “可执行 JAR”是一个 JAR 文件,其中包含您的类、必要的 JDK 类和 JVM。它不包括 Java 编译器。

标签: java ant


【解决方案1】:

解决方案是在javac 目标上将fork 属性设置为yes。

【讨论】:

  • 它对我有用。您能否解释一下问题以及 fork 是如何提供帮助的?
【解决方案2】:

也许 JAVA_HOME 不指向 JDK

JAVA_HOME 当前设置为 C:\Program Files (x86)\Java\ jre7

该消息内容丰富且切中要害,不是吗?

【讨论】:

    【解决方案3】:

    您的 JAVA_HOME 看起来像是指向 JRE 安装,而不是 JDK 安装。 (错误信息说是"C:\Program Files (x86)\Java\jre7"!)

    JRE 不包括任何 Java 开发工具……例如 Ant 试图加载/使用的 javac Java 编译器。

    如果您的机器上确实安装了 JDK,那么您需要做的就是更改 JAVA_HOME 环境变量,以便它引用它......而不是 JRE。否则,您需要下载并安装相关的 JRE。

    【讨论】:

    • @oussama.elhadri 那为什么叫jre7呢?
    • 我不知道,但我的 JAVA_HOME 指向 C:/Program Files (x86)/Java/jdk1.7.0_25/ ,当我做同样的事情时一切正常
    • @oussama.elhadri - 这不是错误消息所说的!你需要注意证据而不是否认它。
    • 我认为问题在于我的 jar 它无法像 Eclipse 那样找到 javac 编译器。因为使用相同的配置 Eclipse 构建正确。
    猜你喜欢
    • 2012-12-19
    • 2012-10-21
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多