当我在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
答案 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”。