无法启动 HSQLDB(java.net.BindException:地址已在使用中)

Posted

技术标签:

【中文标题】无法启动 HSQLDB(java.net.BindException:地址已在使用中)【英文标题】:Can't start HSQLDB (java.net.BindException: Address already in use) 【发布时间】:2012-03-27 09:14:30 【问题描述】:
~~~~~@debian:~/Workspace/SEPM1$ java -cp lib/hsqldb.jar org.hsqldb.server.Server -database.0 mydb -dbname.0 SEPM1
[Server@46f5c8fb]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@46f5c8fb]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@46f5c8fb]: Startup sequence initiated from main() method
[Server@46f5c8fb]: Loaded properties from [/home/~~~~~/Workspace/SEPM1/server.properties]
[Server@46f5c8fb]: Initiating startup sequence...
[Server@46f5c8fb]: [Thread[HSQLDB Server @46f5c8fb,5,main]]: run()/openServerSocket(): 
java.net.BindException: Address already in use
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at java.net.ServerSocket.<init>(ServerSocket.java:128)
    at org.hsqldb.server.HsqlSocketFactory.createServerSocket(Unknown Source)
    at org.hsqldb.server.Server.openServerSocket(Unknown Source)
    at org.hsqldb.server.Server.run(Unknown Source)
    at org.hsqldb.server.Server.access$000(Unknown Source)
    at org.hsqldb.server.Server$ServerThread.run(Unknown Source)
[Server@46f5c8fb]: Initiating shutdown sequence...
[Server@46f5c8fb]: Shutdown sequence completed in 5 ms.
[Server@46f5c8fb]: 2012-03-27 11:06:32.569 SHUTDOWN : System.exit() is called next
~~~~~@debian:~/Workspace/SEPM1$ netstat 

我在 Eclipse 中从事大学项目。我们被要求使用 hsqldb,但在尝试启动它时,我收到一条错误消息,指出地址正在使用中。

我不确定如何解决这个问题。我用谷歌搜索了它,但我能找到的所有相关主题都是关于特定程序的,所以这是一条死胡同。有什么建议吗?

【问题讨论】:

以前的错误很明显,不是吗?您正在运行另一个使用相同端口的程序。甚至可能是您忘记正确关闭的 HSQLDB 实例。 @a_horse_with_no_name 很可能,因为我之前运行它没有问题。但我记得我确实正确地关闭了它。我似乎无法在进程中找到 hsqldb 来杀死它。已经杀死了所有的java,但是没有用 试试 'netstat -n' 看看,绑定了哪些端口。 @ckuetbach 找到它并阻止它。谢谢。 【参考方案1】:

您可以通过添加--port nnnn 命令行参数为服务器使用不同的端口。客户端必须使用相同的端口,例如jdbc:hsqldb:hsql://localhost:1234/SEPM1

查看指南:http://hsqldb.org/doc/2.0/guide/listeners-chapt.html

【讨论】:

做到了,谢谢。不过问题好像是hsqldb关闭不正确造成的……

以上是关于无法启动 HSQLDB(java.net.BindException:地址已在使用中)的主要内容,如果未能解决你的问题,请参考以下文章

无法启动 HSQLDB(java.net.BindException:地址已在使用中)

无法启动hsql数据库

无法删除 HSQLDB 文件

无法以新用户身份连接到 HyperSQL / HSQLDB 数据库

Spring Test:无法从 import.sql 文件将十六进制值插入 hsqldb

HSQLDB服务器ACL不生效