我正在创建一个管理数据库的Java应用程序。我一直在启动JAVA DB服务器手动右键单击-启动服务器。与NetBeans,但因为我不会是一个运行应用程序,不能再做了。我需要一个方法来启动它没有NetBeans。嵌入式或服务器模式,我真的不介意。
我已经搜索了很多,但似乎没有工作。我尝试了这个:Java DB -启动服务器内的应用程序
NetworkServerControl server = new NetworkServerControl(InetAddress.getLocalHost(),1527);
server.start(null)
我得到java.net.ConnectException: Error 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 -> start启动服务器时才有效。如有任何帮助,不胜感激
您可以尝试使用Runtime
启动它吗?
Runtime runtime = Runtime.getRuntime();
runtime.exec(new String[]{ "java", "-jar", "/path/to/derbyrun.jar", "server", "start");
如果您要在它自己的线程中执行此操作,您还可以将.waitFor()
附加到.exec
命令,该命令将挂起,直到进程完成。这将有助于确定数据库是否意外关闭。
同样使用运行时,您可以读取进程的stdout/stderr,并在需要时终止它。