Java 什么';从netbeans运行应用程序和运行jar有什么区别?
我有一个java应用程序,在从Netbeans 7.1运行时可以完美地工作,但是如果我使用构建jar,它会崩溃 我一直在研究这个问题,并注意到应用程序在调用DriverManager.getConnection()时保持不变 我在做一些事情,比如:Java 什么';从netbeans运行应用程序和运行jar有什么区别?,java,sql-server,sql-server-2008,netbeans,netbeans-7,Java,Sql Server,Sql Server 2008,Netbeans,Netbeans 7,我有一个java应用程序,在从Netbeans 7.1运行时可以完美地工作,但是如果我使用构建jar,它会崩溃 我一直在研究这个问题,并注意到应用程序在调用DriverManager.getConnection()时保持不变 我在做一些事情,比如: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection con = DriverManager.getConnection("jdbc:sqlserve
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,但效果相同
我运行的是Windows7家庭高级版
SQL Server 2008(本地主机)
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)
这可能是什么原因造成的 在运行jar文件时,您可能没有将类路径设置为包含SQL Server驱动程序,而Netbeans可能已经为您包含了该驱动程序。我对DriverManager.getConnection调用也有同样的问题,只是无限期挂起
对我来说,解决这个问题的方法是回到Java6Update25。更新29似乎在JDBC与SQL Server的连接中引入了一个bug。我认为更新27(或更早版本)仍然可以正常工作。定义“崩溃”。Stacktrace会有帮助。我没有Stacktrace,因为应用程序只是在调用getConnection后保持。没有引发异常,GUI停止响应。@woozy您可以进行线程转储以查看发生了什么情况吗?@r0ast3d否。我尝试了control+break,但无法获得线程转储…您可以编辑您的原始帖子以添加有关环境的更多详细信息和其他详细信息来调试此问题吗?谢谢您的回复。我有正确的类路径。此外,如果这是问题所在,那么将抛出一个例外,但事实并非如此。这个应用程序就行了。