2012-05-17 45 views
2

我正在使用以下命令使用Windows命令創建數據庫並連接到它,但我得到java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind錯誤。無法連接到hsqldb數據庫

命令用來創建一個名爲XDB數據庫,並連接到它:

java -cp ./lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb 

完全錯誤:

[[email protected]]: [Thread[main,5,main]]: checkRunning(false) entered 
[[email protected]]: [Thread[main,5,main]]: checkRunning(false) exited 
[[email protected]]: Startup sequence initiated from main() method 
[[email protected]]: Loaded properties from [C:\Home\hsqldb\server.properties] 
[[email protected]]: Initiating startup sequence... 
[[email protected]]: [Thread[HSQLDB Server @83cc67,5,main]]: run()/openServerSocket(
): 
java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind 
     at java.net.PlainSocketImpl.socketBind(Native Method) 
     at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365) 
     at java.net.ServerSocket.bind(ServerSocket.java:319) 
     at java.net.ServerSocket.<init>(ServerSocket.java:185) 
     at java.net.ServerSocket.<init>(ServerSocket.java:97) 
     at org.hsqldb.HsqlSocketFactory.createServerSocket(Unknown Source) 
     at org.hsqldb.Server.openServerSocket(Unknown Source) 
     at org.hsqldb.Server.run(Unknown Source) 
     at org.hsqldb.Server.access$000(Unknown Source) 
     at org.hsqldb.Server$ServerThread.run(Unknown Source) 
[[email protected]]: Initiating shutdown sequence... 
[[email protected]]: Shutdown sequence completed in 6 ms. 
[[email protected]]: 2012-05-18 01:31:59.184 SHUTDOWN : System.exit() is called next 

有人能幫助我瞭解爲什麼我收到此錯誤,以及如何解決這個問題?

謝謝

回答

4

的HSQLDB的默認端口是9001

運行netstat -an檢查,看是否有東西正在偵聽端口9001

netstat -an | grep LISTENING檢查偵聽傳入連接

所有服務器

netstat -an | grep 9001檢查特定的端口號。

如果已經有東西存在,那麼您試圖啓動的新的hsqldb將無法將bind a socket轉換爲9001端口。

在Windows 7上,您可以運行TCPView以查看當前正在「過度擁擠」端口上偵聽的進程。然後決定終止正在使用9001或重新配置hsqldb並且客戶端應用程序使用不同(未使用)端口的進程。

可以使用--port XXXX更改hsqldb偵聽的端口,其中XXXX是新的端口號。

java -cp ./lib/hsqldb.jar org.hsqldb.Server --help輸出

也...

The server looks for a 'server.properties' file in the current directory and loads properties from it if it exists. Command line options override those loaded from the 'server.properties' file. 

有此錯誤的其他可能的原因所以這將是有益的瞭解HSQLDB在其上運行的是什麼操作系統。

未綁定一個套接字是可以折磨任何服務器應用程序這樣你就可以查看返回此錯誤,例如詢問JBOSS這裏的問題規定的其他服務器軟件的答案的一個問題...

java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind (JBOSS)

+0

我得到「TCP 127.0.0.1:9001 127.0.0.1:53513 ESTABLISHED」爲「原始本地地址外地址狀態」。我正在使用Windows 7 64位。我現在要做什麼來解決這個問題。我之前從來沒有用過這個命令。當我嘗試「netstat -an | grep LISTENING」時,它給我「'grep'不被識別爲內部或外部命令」。現在我該怎麼做? – skip

+1

所以這意味着有一個服務器在端口9001上偵聽,並且有一個客戶端應用程序連接到它。所以這解釋瞭解釋爲什麼你會得到綁定錯誤。我們不需要知道哪個進程正在該端口上進行偵聽。請按照更新。 –

+1

我更新了答案;你有可能安裝TCPView嗎?這將使得完全診斷問題變得非常容易。 –

0

它看起來像你試圖綁定到端口0,它不存在。嘗試配置不同的端口