H2数据库不是通过命令行启动的

时间:2015-01-08 07:48:28

标签: java database console command h2

我最近在Windows7中安装了H2数据库。要启动H2命令行,我遇到了以下问题。已经有一个进程在8082端口上运行。要解决这个问题,我需要停止这个过程。

The Web Console server could not be started. Possible cause: another server is a
lready running at http://169.254.216.99:8082
Root cause: Exception opening port "8082" (port may be in use), cause: "java.net
.BindException: Address already in use: JVM_Bind" [90061-184]
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Exception opening port
"8082" (port may be in use), cause: "java.net.BindException: Address already in
use: JVM_Bind" [90061-184]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
    at org.h2.message.DbException.get(DbException.java:168)
    at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:194)
    at org.h2.util.NetUtils.createServerSocket(NetUtils.java:160)
    at org.h2.server.web.WebServer.start(WebServer.java:357)
    at org.h2.tools.Server.start(Server.java:474)
    at org.h2.tools.Console.runTool(Console.java:231)
    at org.h2.tools.Console.main(Console.java:99)
Caused by: java.net.BindException: Address already in use: JVM_Bind
    at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
    at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
    at java.net.PlainSocketImpl.bind(Unknown Source)
    at java.net.ServerSocket.bind(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:190)
    ... 5 more
    Press any key to continue . . .

现在我检查了8082端口上正在运行的进程。

netstat -a -n -o | find "8082"

 TCP    0.0.0.0:8082           0.0.0.0:0              LISTENING       4472
 TCP    [::]:8082              [::]:0                 LISTENING       4472

我发现javaw.exe进程正在port 8082上运行。

tasklist

javaw.exe 4472

我从这个链接Java/Javaw/Javaws找到了关于java/javaw/javaws的一些信息。

现在我的问题是,如果我关闭'javaw.exe'进程,我是否会面临运行其他应用程序/程序的任何进一步问题?

或者我可以在不同的端口上运行javaw.exe或更改H2端口(反之亦然)?怎么样?

修改 我知道要杀死进程 - (在命令行中) Taskkill /PID 4472 /F

2 个答案:

答案 0 :(得分:1)

javaw与java类似,但它没有显示黑色(&#34; DOS&#34;)窗口。您可以使用process monitor找出它是哪个进程,但它可能只是另一个正在运行的H2实例...

无论如何,如果你想运行H2,你应该

  • 杀死其他进程
  • 选择其他端口

答案 1 :(得分:0)

我假设您已经(某种程度上)启动了H2服务器,并且第一台服务器使用了8082端口。因此,当您尝试启动另一台H2服务器时,它注意到该端口已被第一台H2服务器占用。

您可以通过访问http://localhost:8082/来检查H2服务器是否已经启动。

如果您仍然想更改H2端口,则可以通过编辑通常位于.h2.server.propertiesC:\Users\[username]上的名为C:\Documents and Settings\[username]的文件来对其进行更改。

如果在此处找不到文件.h2.server.properties,只需复制以下代码即可在C:\Users\[username]创建文件。

#H2 Server Properties
#Wed Aug 01 16:26:15 JST 2018
0=Generic JNDI Data Source|javax.naming.InitialContext|java\:comp/env/jdbc/Test|sa
1=Generic Firebird Server|org.firebirdsql.jdbc.FBDriver|jdbc\:firebirdsql\:localhost\:c\:/temp/firebird/test|sysdba
10=Generic Derby (Server)|org.apache.derby.jdbc.ClientDriver|jdbc\:derby\://localhost\:1527/test;create\=true|sa
11=Generic Derby (Embedded)|org.apache.derby.jdbc.EmbeddedDriver|jdbc\:derby\:test;create\=true|sa
12=Generic H2 (Server)|org.h2.Driver|jdbc\:h2\:tcp\://localhost/~/test|sa
13=Generic H2 (Embedded)|org.h2.Driver|jdbc\:h2\:~/test|sa
2=Generic SQLite|org.sqlite.JDBC|jdbc\:sqlite\:test|sa
3=Generic DB2|COM.ibm.db2.jdbc.net.DB2Driver|jdbc\:db2\://localhost/test|
4=Generic Oracle|oracle.jdbc.driver.OracleDriver|jdbc\:oracle\:thin\:@localhost\:1521\:XE|sa
5=Generic MS SQL Server 2000|com.microsoft.jdbc.sqlserver.SQLServerDriver|jdbc\:microsoft\:sqlserver\://localhost\:1433;DatabaseName\=sqlexpress|sa
6=Generic MS SQL Server 2005|com.microsoft.sqlserver.jdbc.SQLServerDriver|jdbc\:sqlserver\://localhost;DatabaseName\=test|sa
7=Generic PostgreSQL|org.postgresql.Driver|jdbc\:postgresql\:test|
8=Generic MySQL|com.mysql.jdbc.Driver|jdbc\:mysql\://localhost\:3306/test|
9=Generic HSQLDB|org.hsqldb.jdbcDriver|jdbc\:hsqldb\:test;hsqldb.default_table_type\=cached|sa
webAllowOthers=true
webPort=8082
webSSL=false

如果您想更改H2端口,请编辑webPort=8082