启动不带NetBeans的Java DB服务器

时间:2015-08-11 17:49:25

标签: java apache netbeans derby javadb

我正在创建一个管理数据库的Java APP。我通过右键单击 - 启动服务器手动启动JAVA DB服务器。使用NetBeans,但因为我不会成为运行应用程序的那个,不再能够完成。我需要一种在没有NetBeans的情况下启动它的方法。嵌入式或服务器模式,我真的不介意。

我经常搜索,但似乎没什么用。 我试过这个:Java DB - Starting Server within application

    NetworkServerControl server = new     NetworkServerControl(InetAddress.getLocalHost(),1527);
    server.start(null)    

我收到java.net.ConnectException:错误al conectarse al servidor localhost en el puerto 1527 con el mensaje连接被拒绝:连接。

我也试过用命令行

启动它
    String[] command =
{
    "cmd",
};
Process p = Runtime.getRuntime().exec(command);
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
    try (PrintWriter stdin = new PrintWriter(p.getOutputStream())) {
        stdin.println("cd C:\\Program Files\\Java\\jdk1.8.0_31\\db\\lib");
        stdin.println("java -jar derbyrun.jar server start");
    }
int returnCode = p.waitFor();

也被连接拒绝,(数据库Citas未找到)所以唯一可行的方法是:

    String host = "jdbc:derby://localhost:1527/Citas";
    con = DriverManager.getConnection(host, username, password);    

但只有通过点击Java DB启动服务器才有效 - >开始。 任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Runtime启动它吗?

Runtime runtime = Runtime.getRuntime();
runtime.exec(new String[]{ "java", "-jar", "/path/to/derbyrun.jar", "server", "start");

如果您要在自己的线程中执行此操作,您还可以将.waitFor()附加到.exec命令,该命令将一直挂起,直到该过程完成。这可以很好地确定db是否意外关闭。

同样使用运行时,您可以读取进程的stdout / stderr,并在需要时将其终止。可能性是无穷无尽的。