java - 在没有NetBeans的情况下启动Java DB服务器

标签 java 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:错误连接器本地主机localhost en 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-> start启动服务器时,它才有效。
任何帮助将不胜感激

最佳答案

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

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

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

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

关于java - 在没有NetBeans的情况下启动Java DB服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31948602/

相关文章:

Java虚拟机多次崩溃

java - SSL握手过程

java - Netbeans 8.2 不会运行该项目

Java 和数据库查询?

java - 使用 postgresql 从表中获取最新记录

java - 使用java的多列顺序

java - CDI @Inject 不起作用,对象保持为空

Netbeans 不会安装在 Windows 10 上

sql - 在JavaDB Apache Derby中,我不知道是什么导致错误: Syntax error: Encountered “)” at line 30, column 1. SQLState: 42X01

java - 无法删除 Apache Derby Embedded DB 系统目录