2015-07-31 2 views
0

Я разрабатываю программу с NetBeans, которая подключается к онлайн-серверу MySQL с использованием PHPMyadmin, запуская программу через NetBeans, она отлично работает, но когда я пытаюсь запустить ее, просто используя Jar-файл в папка «dist» в proyect выдаст мне ошибку, которую я выложу в конце.Ошибка подключения к драйверу NetBeans-сервера dist Jar-файл

Мой вопрос:

Почему это происходит в среде NetBeans работает, но не с DIST файл Jar?

Как я могу запустить его на другом компьютере, не используя NetBeans, просто дважды щелкнув файл Jar? (Я только что загрузил последнюю версию java на другом компьютере, у которого нет IDE NetBean, и я получил сообщение об ошибке, которое не может подключиться к драйверу jdbc mysql).

Благодарим вас за поддержку.

Вот ошибка:

Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

Java.net.ConnectException 

MESSAGE: Connection refused: connect 

STACKTRACE: 

Java.net.ConnectException: Connection refused: connect 
At.java.net.DualStackPlainSocketImpl.connect0(Native Method) 

At java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 

At java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 

At java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 

At java.net.AbstractPlainSocketImpl.connect (Unknown Source) 

At java.PlainSocketImpl.connect(Unknown Source) 

At java.net.SocksSocketImpl.connect(Unknown Source) 

At java.net.Socket.connect(Unknown Source) 

At java.net.Socket<init>(Unknown Source) 

At com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256) 

At com.mysql.jdbc.MysqllO.<init>(MysqlIIO.java:271) 

... 
... 

... 
+0

You говорят о 'MySQL', а версия, которую вы используете, не' Embedded', я думаю? До тех пор, пока вы не используете [встроенную базу данных] (https://en.wikipedia.org/wiki/Embedded_database), она не будет работать напрямую из 'jar' или любого исполняемого файла – mustangDC

ответ

0

Вот мой простой тест, который был успешным как внутри, так и за ее пределами Netbeans. Я использовал обычный проект java (Ant), за исключением того, что я добавил MySQL JDBC-драйвер в качестве библиотеки. (щелкните правой кнопкой мыши значок «Библиотеки» в окне проекта, добавьте библиотеку и выберите ее в списке.) Добавьте следующий файл в MySqlCheck в пакет mysqlcheck. Измените localhost на правильный хост для вас, кто-то к вашему имени пользователя, mypasswd, протестируйте какую-нибудь базу данных, которую вы имеете, и «Без названия» на какую-нибудь небольшую таблицу, полезную для тестирования. Так как URL-адрес соединения жестко закодирован в этом примере, он может решить проблему, если вы получаете информацию о соединении из аргумента командной строки, системного свойства или чего-то еще, вероятно, отличающегося внутри и вне Netbeans.

Если он правильно строит в поддиректории dist, будет ваша jar, а в подкаталоге lib это будет mysql-connector-java-5.1.23-bin.jar. Если вы перемещаете банку в dist, вам всегда нужно переместить подкаталог lib с помощью своих банок. Лучше всего рекурсивно закрепить всю директорию dist. Если вы перейдете на другой хост, строка localhost должна быть изменена на фактический хост. Также пользовательские разрешения и настройки сети могут вызвать проблему, возможно, администратор должен будет исправить.

Проект также может быть клонирован здесь:

https://github.com/wshackle/MysqlCheck

Для проверки откройте терминал и введите:

ява -jar расстояние/yourproject.jar

package mysqlcheck; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import java.sql.SQLException; 

/** 
* 
* @author Will Shackleford {@literal <[email protected]> } 
*/ 
public class MysqlCheck { 
/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    Connection conn = null; 
    try { 
     conn 
       = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?" 
         + "user=somebody&password=mypasswd"); 
     ResultSet rs = conn.createStatement().executeQuery("select * from Untitled;"); 
     ResultSetMetaData meta = rs.getMetaData(); 
     for (int i = 0; i < meta.getColumnCount(); i++) { 
      System.out.println("i = " + i); 
      System.out.println("columnName=" + meta.getColumnName(i + 1)); 
      rs.first(); 
      do { 
       System.out.println("colunmString=" + rs.getString(i + 1)); 
      } while (rs.next()); 
     } 
     } catch (SQLException ex) { 
      // handle any errors 
      System.out.println("SQLException: " + ex.getMessage()); 
      System.out.println("SQLState: " + ex.getSQLState()); 
      System.out.println("VendorError: " + ex.getErrorCode()); 
     } catch (Exception ex) { 
      // handle any errors 
      System.out.println("SQLException: " + ex.getMessage()); 
     } 
    } 
} 
Смежные вопросы