В чем разница между запуском приложения из netbeans и запуском jar?

#java #sql-server #sql-server-2008 #netbeans #netbeans-7

#java #sql-сервер #sql-server-2008 #netbeans #netbeans-7

Вопрос:

У меня есть java-приложение, которое отлично работает при запуске из Netbeans 7.1, но оно вылетает, если я использую build jar.

Я изучал проблему и заметил, что приложение удерживается при вызове DriverManager.getConnection() .

Я делаю что-то вроде:

 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
Connection con =   DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:2304;user=username;password=12345;database=databasename");
 

Я также пробовал jtds, но результат тот же.

Я использую Windows 7 Home Premium SQL Server 2008 (localhost) Netbeans 7.1 (приложение отлично работает при запуске из Netbeans) Java версии 1.6

Дамп потока

 java.lang.Exception: Stack trace
    at java.lang.Thread.dumpStack(Unknown Source)
    at joomlasyncrnzr.JoomlaSyncrnzrApp.getCon(JoomlaSyncrnzrApp.java:314)
    at joomlasyncrnzr.JoomlaSyncrnzrApp.taxas(JoomlaSyncrnzrApp.java:604)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(Ap
licationAction.java:662)
    at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicatinAction.java:698)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
 

Что может быть причиной этого?

Комментарии:

1. Определите «сбои». Трассировка стека могла бы помочь.

2. У меня нет трассировки стека, поскольку приложение просто сохраняется после вызова getConnection. Исключение не выдается, и графический интерфейс перестает отвечать.

3. @woozy можете ли вы сделать дамп потока, чтобы посмотреть, что происходит?

4. @r0ast3d нет. Я пробовал control break, но мне не удалось получить дамп потока…

5. можете ли вы отредактировать свое исходное сообщение, чтобы добавить более подробную информацию об окружающей среде и другие детали для устранения этой проблемы.

Ответ №1:

У меня была такая же проблема с вызовом DriverManager.getConnection, который просто зависал на неопределенный срок.

Что решило проблему для меня, так это возвращение к обновлению Java 6 25. Обновление 29, похоже, вводит ошибку с подключением JDBC к SQL Server. Я думаю, что обновление 27 (или более раннее) все еще работает нормально.

Ответ №2:

Возможно, вы не настраиваете свой CLASSPATH для включения драйвера SQL Server при запуске файла jar, тогда как Netbeans, вероятно, уже включил его для вас.

Комментарии:

1. Спасибо за ваш ответ. У меня правильный путь к классу. Кроме того, если бы это было проблемой, возникло бы исключение, но это не так. Приложение просто сохраняется.