简体   繁体   English

从netbeans运行应用程序与运行jar之间有什么区别?

[英]What's the difference between running the application from netbeans and running the jar?

I have a java application that works perfectly when running from Netbeans 7.1 but it crashes if I use the build jar. 我有一个Java应用程序,当从Netbeans 7.1运行时,它可以完美运行,但是如果使用构建jar,它将崩溃。

I've been investigating the problem and I've noticed that the application holds on calling DriverManager.getConnection(). 我一直在研究问题,并且注意到该应用程序可以继续调用DriverManager.getConnection()。

I'm doing something like: 我正在做类似的事情:

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

I've also tried jtds but it has the same result. 我也尝试过jtds,但结果相同。

I'm running on Windows 7 Home Premium SQL Server 2008 (localhost) Netbeans 7.1 (application works fine when running from Netbeans) Java Version 1.6 我正在Windows 7 Home Premium SQL Server 2008(localhost)Netbeans 7.1上运行(从Netbeans运行时,应用程序运行正常)Java 1.6版

Thread dump 线程转储

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)

What could be causing this? 是什么原因造成的?

I had the same problem with the DriverManager.getConnection call just hanging indefinitely. 我有无限期挂起DriverManager.getConnection调用的相同问题。

What solved the problem for me was going back to Java 6 Update 25. Update 29 seems to introduce a bug with the JDBC connection to SQL Server. 对我来说解决问题的是回到Java 6 Update25。Update29似乎引入了与SQL Server的JDBC连接的错误。 I think Update 27 (or earlier) still work fine. 我认为Update 27(或更早版本)仍然可以正常工作。

运行jar文件时,也许您没有将CLASSPATH设置为包括SQL Server驱动程序,而Netbeans可能已经为您提供了它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM