在Eclipse中构建Ant时出现SocketTimeoutException

4

我一直在遇到一个问题,就是Eclipse无法构建我的一些Ant脚本(有些可以正常构建,有些则不行)。在Eclipse Mars.1 Release (4.5.1)控制台上没有任何输出。我的build.xml在命令行下用ant运行正常。我在workspace/.metadata/.log里发现了以下错误消息:

!ENTRY org.eclipse.ant.launching 4 120 2016-03-03 09:58:38.197
!MESSAGE Error logged from Ant UI: 
!STACK 0
java.net.SocketTimeoutException: Accept timed out
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
    at java.net.ServerSocket.implAccept(ServerSocket.java:545)
    at java.net.ServerSocket.accept(ServerSocket.java:513)
    at org.eclipse.ant.internal.launching.launchConfigurations.RemoteAntBuildListener$ServerConnection.run(RemoteAntBuildListener.java:89)

这是其他人在Stackoverflow上询问过的问题 (链接)

我注意到的另一个奇怪的事情是,在控制台上方有一行文本显示正在使用哪个java版本,而工作的脚本与不工作的脚本之间存在差异。工作正常的Ant构建脚本使用的是jdk1.7.0_79,而失败的脚本则使用了预装的/System 1.6版本。

2个回答

7

我不知道为什么我的Java 1.6不能正常工作,但最终我找到了可以更改ant构建所需的Java版本的位置。它在 Run/External Tools/External Tools Configuration.../<select failing build>/JRE 中。奇怪的是,在成功运行后尝试切换回1.6时,运行ant会出现以下消息:

JRE version less than 1.7 is not supported. 

不知道为什么首先选择了1.6(也许项目本身就是1.6),或者为什么它没有给我警告!

无论如何,似乎有几个原因导致了我上面发布的错误,但你可以尝试以下方法。


3
在Eclipse Oxygen、Java1.8和Ant部署到tomcat7时,我遇到了几乎相同的问题。 Eclipse的控制台没有输出任何错误信息。当我单击build.xml文件上的Run Ant时,它只会显示“终止”。 WTF
为了解决这个问题,我不得不将所有内容都设置成Java 1.8,特别是ant的运行时JRE。但“Java Compiler” ->“Compiler compliance level”必须仅设置为Java 1.7。
实际上,这很简单。有时候类路径设置可能有点棘手,尤其是没有任何错误消息的情况下。
不要忘记检查你的ANT_HOME设置:Eclipse -> Prefs -> Runtime ->“恢复默认值”应该就足够了。(Eclipse默认带有Ant 1.10.1,需要在运行时使用Java 8。)
而且:如果它只适用于某些build.xml文件,则说明你正在用ant-build过程覆盖工作区设置。为了解决这个问题:单击“Run As” -> “Ant Build ...”(不是“Ant Build”),并在此处检查您的类路径(针对ant)和JRE设置到Java 1.8。
敬礼
好吧,只需检查您的ANT_HOME设置即可。

Eclipse Oxygen的类似解决方案,但我只下载了独立的Ant 1.9.9并将ANT_HOME切换到该版本,所有功能都可以正常工作,因此在我的角度来看,这似乎是Oxygen和内置的Ant 1.10之间存在问题。 - Barney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接