【问题标题】:Getting Error running javac.exe compiler message, while using Ant in Eclipse在 Eclipse 中使用 Ant 时出现错误运行 javac.exe 编译器消息
【发布时间】:2010-08-03 07:21:04
【问题描述】:

当我在 Eclipse 中运行 Ant 构建时,我收到以下错误消息并且 Ant 构建失败。

错误信息:运行 javac.exe 编译器出错

构建停止的行:

<javac destdir="${classes.home}" debug="on" fork="true" memoryinitialsize="512M" memorymaximumsize="1G">
        <classpath refid="classpath"/>
        <src path="${source.home}"/>
</javac>

以前有没有人遇到过类似的问题?或者有人知道这里出了什么问题吗?

系统信息:Eclipse Helio、JDK 1.5

【问题讨论】:

  • 没有比这更多的输出了吗?你能用详细的日志记录让它运行吗?
  • 出现错误消息后不再输出。将尝试详细日志记录。
  • 这也发生在我没有 Eclipse 的情况下——jdk-8u241-windows-x64.exe 在我的 PATH 中放置了一个仅包含 java.exe、javaw.exe 和 javaws.exe 的目录。将 javac.exe 添加到 PATH 解决了它。

标签: java eclipse ant build


【解决方案1】:

我遇到了同样的问题,问题是,在 eclipse 中 java.home 指的是 JRE 而不是 JDK。我改变了它,构建成功。您可以执行以下操作将其更改为 JDK:

Preferences > Java > Installed JRE's > Add... 对于“JRE Type”,选择“Standard VM”> Next > Directory:选择您的 JDK 目录(而不是 JRE)(在我的情况下:C:\Program Files\Java \jdk1.6.0_16 ),按确定。

现在,您回到“已安装的 JRE”,在此处也选择 JDK。

以下帖子有助于找到解决方案。 JAVA_HOME points to the wrong place

【讨论】:

    【解决方案2】:

    如果上面接受的答案没有为您解决问题(因为它没有为我解决问题),在按照上面接受的答案中的建议将 java.home 更新为 JDK 而不是 JRE 后,转到运行 ->外部工具 -> 外部工具配置 -> 在左侧菜单中选择您的 build.xml -> 选择 JRE 选项卡 -> 为单独的 JRE 单选按钮选项选择 JDK(从下拉列表中) -> 单击运行。

    这应该可以解决问题。

    【讨论】:

    • +1,对于那些在运行 ant 时遇到此错误的人来说,这是更准确的答案。是的,您需要确保将 JDK 设置为默认 JRE,但您需要告诉您的 ant 构建也使用此 JDK。
    • 非常感谢!!使用 Eclipse Ganymede,我使用的方法类似于接受的答案,但使用 Eclipse JEE Kepler,我使用这种方法。
    【解决方案3】:

    我有同样的问题,并从 javac 中删除了属性 fork,问题就消失了。

    【讨论】:

    • 对我有用,但带有警告消息:[javac] Since fork is false, ignoring memoryInitialSize setting. [javac] Since fork is false, ignoring memoryMaximumSize setting.
    • 成功了!下面可能有更多的 JUnit 测试说 fork="yes" 以及您需要更改为 false 否则它将失败并显示“Process Fork Failed”。
    【解决方案4】:

    可能 javac 问题是因为“javac.exe”不在您的系统路径中,请编辑您的系统路径并将您的 JDK 的 /bin 目录添加到其中以更正此问题。

    打开 shell 或命令提示符并尝试输入:javac 以检查系统路径是否设置正确。

    【讨论】:

    • 我已经在 Eclipse “Installed JRE's”首选项页面中配置了 JDK,我认为 Eclipse 负责将 javac 放入 claspath。
    • 不要将 CLASSPATH 与 SYSTEM PATH 混淆,类路径用于编译目的,系统路径负责系统二进制文件。如果问题出在您可以尝试,只需将 JDK bin 路径附加到您的 SYSTEM PATH 即可。
    • 这也是解决此问题的另一种方法。
    • 这是为我做的。我工作的公司的 IT 部门倾向于做出破坏事情的改变。原来JAVA_HOME 在某个时候从我系统的PATH 中删除了。
    • 在我的情况下,java安装路径的bin文件夹中没有javac.exe。我重新安装了java并且它工作了!
    【解决方案5】:

    将 eclipse 配置为指向 JDK 而不是 JRE 对我不起作用。 通过进一步调查,我通过停止构建过程分叉解决了这个问题。 在您的 build.xml 中,从 &lt;javac&gt; 标记中删除属性 fork

    【讨论】:

      【解决方案6】:

      我遇到了同样的问题,这是我的建议,也许它会对某人有所帮助。
      事实上,消息Error running javac.exe compiler 表示出了点问题。问题是,究竟是什么。当 Ant 运行带有 fork="true" 标志的 javac 任务时,它不会打印任何错误详细信息。就我而言,即使我添加了verbose="true",它也没有打印它们,正如here 所建议的那样。解决方案是在 Ant 命令行中添加 -verbose 标志

      ant -verbose
      

      此后,Ant 开始打印完整的错误消息,因此您可以修复问题。

      【讨论】:

        【解决方案7】:

        接受的答案对我不起作用。 但是右键单击 in Ant 并将 Java Runtime Environment (JRE) 设置为 Jave Development Kit (JDK) 为我工作。

        Abhi Rampal's answer 是一步一步的,就像我在 eclipse 上解决问题一样。

        转到运行 -> 外部工具 -> 外部工具配置 -> 在左侧菜单中选择您的 build.xml -> 选择 JRE 选项卡 -> 为单独的 JRE 单选按钮选项选择 JDK(从下拉列表中) -> 单击运行。

        【讨论】:

          【解决方案8】:

          我通过检查 Windows 7 中的环境变量解决了这个问题。我发现 JAVA_HOME 指向 C:\ Program Files (x86)\Java\jdk1。 6.0_31 当它应该是 C:\ Program Files\Java\jdk1.6.0_31。如果你想知道如何read this

          【讨论】:

            【解决方案9】:

            如果您在 Eclipse 中运行 ant,请单击 run as --> Ant 第二个选项并选择 JDK 路径并再次运行构建。

            【讨论】:

              【解决方案10】:

              尝试将 memorymaximumsize="1G" 更改为 memorymaximumsize="512M"。

              【讨论】:

                【解决方案11】:

                尝试释放一些主内存。关闭需要大量内存的程序,并尽可能停止需要大量内存的进程。

                【讨论】:

                  【解决方案12】:

                  我已经尝试了所有方法,但在我设置(fork='no' 或 fork='false' 在你的情况下)并完美地为我工作之前没有任何效果

                  【讨论】:

                    【解决方案13】:

                    我删除了 fork="true" 并通过了那段代码。遇到这个问题的人可能会感兴趣的是,现在,在那一行,我得到了输出:

                    'Since fork is false, ignoring memoryMaximumSize setting.'
                    

                    因此,如果您需要保留您的 fork="true" 设置,这可能是 memoryMaximumSize 的问题,如上所述。

                    【讨论】:

                      【解决方案14】:

                      我解决了这样的问题:

                      我的 Java 主文件夹路径错误。应该是C:\Program Files (x86)\Java\jdk1.5.0_15,但实际上是C:\Program Files (x86)\Java\jdk1.5.0_15\bin

                      【讨论】:

                        【解决方案15】:

                        我们在 Windows 构建机器上遇到了同样的问题,而在本地(在 unix 机器上)一切正常。 Fork = true 也没有帮助,它导致 Process fork failed 异常也只在构建服务器上

                        研究

                        经过一些研究,我们发现类路径可能太长了。 我们在 Windows 机器上本地重新创建了确切的文件夹结构,我们遇到了同样的问题,我们看到类路径太长了(我们使用 -v 和 -d 来了解它有多长),这就是错误的原因.

                        解决方案

                        解决方案是创建一个 jar,其中仅包含包含所有库的清单,有关详细信息,请参阅 this answer

                        【讨论】:

                          【解决方案16】:

                          对我来说,这是 WEB-INF/lib 目录中的备份库。 我在主库中有多个库目录。并且类路径包含它们都导致 javac 命令变得太长。

                          我删除了这些目录,它对我有用。

                          【讨论】:

                            【解决方案17】:

                            这是一个非常简单的问题。基本目录路径包含许多指向实际文件夹的子文件夹。例如: /folder1/folder2/.../.../folderN/{project}

                            减小基本目录路径的大小,它会很容易编译。 例如: D:/{项目}

                            稍后谢谢我。

                            【讨论】:

                              【解决方案18】:

                              大多数时候,项目文件夹的长路径会导致构建失败。即使从命令行运行,也总是会发现这种情况。只需缩短您的路径即可:

                              {Drive Letter}/{Checkout Project Folder}

                              ant命令肯定会编译java JDK。

                              【讨论】:

                                【解决方案19】:

                                您需要查看日志以了解错误的根本原因。在运行 ant 脚本时添加运行时参数“-verbose”,它将显示错误的堆栈跟踪。

                                对我来说,它抛出“错误运行 javac 编译器 ant 文件名或扩展名太长......” 我解决了这个问题,将 java 安装在长度较短的单独位置,例如 D:/java/jdk1.8_251。

                                另外,您可以尝试将 eclipse 工作区路径缩短为更短的路径。

                                希望对你有帮助!

                                【讨论】:

                                  猜你喜欢
                                  • 1970-01-01
                                  • 2011-05-10
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2011-12-12
                                  • 2011-11-05
                                  • 1970-01-01
                                  • 2012-11-04
                                  相关资源
                                  最近更新 更多