2012-05-17 44 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,它不存在。尝试配置不同的端口