我正在Netbeans中开发一个应用程序,它正在使用JavaDB。我可以连接到它并执行查询而不会出现问题,但由于某种原因,Netbeans中的“输出 - JavaDB数据库进程”窗格一直显示
Security manager installed using the Basic server security policy.
Could not listen on port 1527 on host localhost:
java.net.BindException: Address already in use
如何找出正在使用的流程,或绑定到该端口?
在Ubuntu Karmic上,Netbeans 6.7.1
答案 0 :(得分:13)
要查找侦听端口1527的进程的pid,请使用:
$ netstat -ap | grep 1527
tcp6 0 0 localhost:1527 [::]:* LISTEN 31962/java
或
$ lsof -i :1527
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 31962 pascal 28u IPv6 13413903 0t0 TCP localhost:1527 (LISTEN)
然后:
$ ps aux | grep 31962 | grep -v grep
pascal 31962 0.1 0.2 674936 4172 pts/1 Sl May08 1:23 /usr/lib/jvm/java-6-sun/bin/java -classpath /usr/share/javadb/lib/derby.jar:/usr/share/javadb/lib/derbynet.jar:/usr/share/javadb/lib/derbytools.jar:/usr/share/javadb/lib/derbyclient.jar org.apache.derby.drda.NetworkServerControl start
而且我很确定你会发现你所发现的是与JavaDB相对应的Java进程的pid(我不知道除了JavaDB之外还有许多使用端口1527的进程)。你是怎么开始的?
PS:我正在使用JavaDB,我在命令行上启动,在任何IDE之外。
答案 1 :(得分:1)
两个可以帮助你的程序是'lsof'和'netstat',它们都可以提供这些信息。我会给你打电话给他们的参数,但是我使用我的超大iPhone来回答它,查找它太麻烦了。所以这留给读者练习; - )