Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Ant套接字任务在mac上不工作_Macos_Sockets_Tomcat_Ant - Fatal编程技术网

Macos Ant套接字任务在mac上不工作

Macos Ant套接字任务在mac上不工作,macos,sockets,tomcat,ant,Macos,Sockets,Tomcat,Ant,我在build.xml上获得了以下内容 <target name="check-port" description="Check whether Tomcat is running"> <condition property="tomcat.running"> <socket server="localhost" port="8080"/> </condition> </target> 它突然停止

我在build.xml上获得了以下内容

<target name="check-port" description="Check whether Tomcat is running">
    <condition property="tomcat.running">
        <socket server="localhost" port="8080"/> 
    </condition>
</target>

它突然停止在mac上工作,在windows上工作正常,但在mac上,即使我在本地主机8080上没有运行任何东西,它也显示为真

我不知道为什么会发生这种情况,或者为什么它在windows上工作。它曾经在mac上工作过

我正在测试OSX优胜美地版本10.10.2

这可能与什么有关?如何修复它?

我要做的第一件事是通过编译和运行以下代码来模拟
ant
条件代码的行为:

import java.net.Socket;
import java.io.IOException;
public class Test {
    public static void main(String args[]) {
        try {
            Socket socket = new Socket("localhost", 8080);
        } catch (IOException e) {
            System.out.println("down");
            System.exit(0);
        }
        System.out.println("up");
    }
}

如果在Tomcat未运行时输出
up
,那么您在
java
lsof
之间就什么是“upness”存在根本性的分歧,需要进行调查

查看是否确实存在某些内容的一种方法是尝试连接到它,例如:

telnet localhost 8080
如果这样的话,我通常会尝试
lsof
,看看哪个进程得到了它,但正如您所说的,这似乎不起作用。可能是一种不同的工具,如:

netstat -na | grep ':8080 '
我会成功的


如果它输出
down
,则您会遇到不同的问题,可能是
ant
中存在问题,也可能是您的构建过程本身启动服务器(或其他服务器)。这也需要进一步调查,但你至少已经缩小了问题的范围

您可以尝试的一件事是在构建过程中运行Java代码,查看它的想法,同时
ant
告诉您服务器在那里。

我发现了问题

ESET antivirus似乎正在本地主机8080上启动一个进程调用“esets\U proxy”,但有趣的是,它在
lsof
netstat
中不可见。奇怪的是,当我在8080上启动一只野蝇时,它变得清晰可见。但只有当野蝇在奔跑时,我把它关掉后,它才会停止显示。我删除了ESET和ant套接字任务停止,显示端口8080正在使用中


谢谢@paxdiablo你的帮助真的很有用

我在OS X上的卡巴斯基反病毒软件也遇到了同样的问题,它在本地主机8080上启动了一个不可见的进程(没有netstat)。

请原谅这个假设,但是你怎么知道没有人在监听这个端口呢?
sudo lsof-I-p | grep 8080
同样,当我手动启动tomcat时,它不会抱怨FSG77,那很有趣。我已经尽我所能给出了答案,但我认为这可能需要一些深入的调查。尽管如此,希望答案能让你更清楚地指出问题所在。它正在向上显示
。。。但是我可以启动tomcat而不必对端口有任何抱怨8080@afsg77,请参阅Try
telnet
上的更新-不确定OSX可能会拉什么诡计,但实际上可能存在服务器事件,尽管您已关闭Tomcat。它正在连接,但已关闭<代码>测试仪$telnet本地主机8080正在尝试::1。。。已连接到本地主机。转义字符为“^]”。连接已被外部主机关闭。如何查看使用该端口的是什么?嗯,
lsof
似乎是该作业的工具:-)但是,由于这正是您所关心的,我添加了一个
netstat
变体。您还可以尝试
lsof-i:8080-P