Я разрабатываю приложение в Netbeans, и он использует JavaDB. Я могу соединиться с ним и выполнить запросы без проблем, но по некоторым причинам, область "Output - JavaDB Database Process" в Netbeans продолжает отображаться
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, Netbeans 6.7.1
Чтобы найти pid процесса, слушающего порт 1527, используйте:
$ 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
И я почти уверен, что то, что вы найдете, будет pid процесса Java, соответствующего JavaDB (я не знаю много процессов, использующих порт 1527, кроме JavaDB). Как вы на самом деле запустили его?
PS: Я использую JavaDB, который запускаю в командной строке, вне какой-либо IDE.
Две программы, которые могли бы вам помочь, это 'lsof' и 'netstat', обе они могут предоставить эту информацию. Я бы дал вам аргументы для их вызова, но я использую свой огромный iPhone для ответа, и это слишком громоздко для поиска. Так что это остается в качестве упражнения для читателя ;-)