2015-08-11 2 views
2

Я создаю Java APP, который управляет базами данных. Я запускаю сервер JAVA DB вручную, щелкнув правой кнопкой мыши - запустите сервер. с NetBeans, но так как я не собираюсь быть тем, кто запускает приложение, которое больше нельзя делать. Мне нужен способ запустить его без NetBeans. Встраиваемый или серверный режим, я не против.Запустить сервер Java DB без NetBeans

Я много искал, но ничего не работает. Я попытался это: Java DB - Starting Server within application

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

Я получил java.net.ConnectException: Ошибка аль conectarse аль Servidor локальный ан-эль пуэрто 1527 жулик эль 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. Любая помощь была бы высоко оценена

ответ

0

Вы можете попробовать начать с Runtime?

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

Если вы должны были сделать это в своем собственном потоке, вы можете также добавить .waitFor() к .exec команде, которая будет висеть, пока процесс не завершится. Было бы неплохо определить, неожиданно ли закрылся db.

Также с использованием среды выполнения вы можете прочитать stdout/stderr процесса и убить его, если потребуется. Возможности бесконечны.

+0

Я получил: Seha rechazado la conexión porque no se ha encontrado la base de datos Citas. По-английски это было бы что-то вроде: Connection отклонено, потому что база данных Citas не найдена. Это то же самое, что я сделал с помощью командной строки Windows. Я отредактирую свой вопрос, чтобы показать вам. –

+0

«База данных Citas not found» проста для исправления. Поскольку ваш URL-адрес подключения указывает простое имя базы данных, Derby ищет в том месте, где вы запустили сетевой сервер. Вы можете указать абсолютное местоположение для БД в URL вашего соединения или указать derby.system.home при запуске сетевого сервера. Если база данных действительно не существует, укажите «create = true». –

Смежные вопросы