【问题标题】:H2 Data Base is not starting through command lineH2 数据库未通过命令行启动
【发布时间】:2015-03-06 06:43:59
【问题描述】:

我最近在 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

【问题讨论】:

    标签: java database console command h2


    【解决方案1】:

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

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

    • 杀死其他进程
    • 选择另一个端口

    【讨论】:

      【解决方案2】:

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

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

      如果您仍然想更改 H2 端口,您可以通过编辑一个名为 .h2.server.properties 的文件来更改它,该文件通常位于 C:\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

      【讨论】:

        猜你喜欢
        • 2019-10-06
        • 2010-12-02
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-06
        • 2020-08-29
        • 1970-01-01
        相关资源
        最近更新 更多