h2 不以编程方式启动

h2 doesn't start programmatically

我写了下面的代码:

  private static void startH2(){
        Server server = null;
        try {
            server = Server.createTcpServer("-tcpAllowOthers").start();
            Class.forName("org.h2.Driver");
            Connection conn = DriverManager.
                    getConnection("jdbc:h2:tcp://localhost/~/test;MODE=PostgreSQL", "sa", "");
        } catch (Exception e) {
            LOG.error("Error while initialize", e);
        }
        System.out.println("finish");
    }
    public static void main(String [] args){
        startH2();
    }

我运行我的主要方法,看到如下情况:

看起来 Server.createTcpServer 创建了新的非守护线程。

但是 url localhost:8082 我没有看到 h2 网络控制台(实际结果 - ERR_CONNECTION_REFUSED

如何解决这个问题?

P.S.

我注意到 url

http://localhost:9092/

我的浏览器下载了包含奇怪内容的文件:

如果要解码此文本,我会看到以下消息:

Version mismatch, driver version is “0” but server version is “15”

我用的是h2版本1.4.182

H2 contains multiple servers:

您已启动 TCP 服务器。如果要使用浏览器,还需要启动Web Server:

private static void startH2(){
    Server tcpServer = null;
    Server webServer = null;
    try {
        tcpServer = Server.createTcpServer("-tcpAllowOthers").start();
        System.out.println("TCP Server Port: " + tcpServer.getPort());
        Class.forName("org.h2.Driver");
        Connection conn = DriverManager.
                getConnection("jdbc:h2:tcp://localhost/~/test22;MODE=PostgreSQL", "sa", "");
        webServer = Server.createWebServer().start();
        System.out.println("Web Server (H2Console) Port: " + webServer.getPort());
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("finish");
}