在Eclipse中使用Ant时,获取错误运行javac.exe编译器消息

时间:2010-08-03 07:21:05

标签: java eclipse ant build

当我在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

18 个答案:

答案 0 :(得分:55)

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

偏好设置&gt; Java&gt;已安装的JRE&gt;添加...对于'JRE Type'选择'Standard VM'&gt;下一个&gt;目录:选择您的JDK目录(而不是JRE)(在我的情况下:C:\ Program Files \ Java \ jdk1.6.0_16),按OK。

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

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

答案 1 :(得分:42)

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

这应解决问题。

答案 2 :(得分:17)

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

答案 3 :(得分:6)

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

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

答案 4 :(得分:4)

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

答案 5 :(得分:3)

我遇到了同样的问题,这是我的建议,也许会帮助别人 事实上,消息Error running javac.exe compiler意味着出了问题。问题是,到底是什么。当Ant使用javac标志运行fork="true"任务时,它不会打印任何错误详细信息。在我的情况下,即使我按照建议here添加了verbose="true",它也没有打印出来。解决方案是 -verbose 标志添加到Ant命令行

ant -verbose

在此之后,Ant开始打印完整的错误消息,因此您可以解决问题。

答案 6 :(得分:2)

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

的方式

答案 7 :(得分:1)

如果你在eclipse中运行ant,请点击运行 - &gt; Ant第二个选项并选择JDK路径并再次运行构建。

答案 8 :(得分:0)

我删除了fork =“true”,我已经超过了那段代码。对于那些遇到这个问题的人来说,有趣的是现在,在那一行,我得到了输出:

'Since fork is false, ignoring memoryMaximumSize setting.'

因此,如果您需要保持fork =“true”设置,则可能是memoryMaximumSize的问题,如上所述。

答案 9 :(得分:0)

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

{Drive Letter}/{Checkout Project Folder}

和ant命令肯定会编译java JDK。

答案 10 :(得分:0)

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

减小基本目录路径的大小,可以轻松编译。 例如: D:/ {project}

稍后谢谢。

答案 11 :(得分:0)

对我来说,它是WEB-INF / lib目录中的备份库。 我在主库中有多个库目录。而且classpath包含了所有这些内容,导致javac命令变得太长。

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

答案 12 :(得分:0)

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

Abhi Rampal's answer就像我在日食上解决问题的方式一样。

  

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

答案 13 :(得分:0)

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

<强>研究

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

<强>解决方案

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

答案 14 :(得分:0)

我解决了这个问题:

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

答案 15 :(得分:0)

我已经尝试了所有的东西但是没有任何作用,直到我设置( fork ='no'或fork ='false'在你的情况下)并且完美地为我工作

答案 16 :(得分:0)

尝试释放一些主内存。关闭需要大量内存的程序,如果可以,请停止内存耗尽的过程。

答案 17 :(得分:0)

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