2017-06-01 5 views
0

Ich weiß, dass dies wahrscheinlich etwas einfaches, aber ich kann es nicht herausfinden ...SQL im ausführbaren Jar?

Ich versuche, eines meiner Programme in ein ausführbares Glas zu konvertieren und es tut etwas SQL mit JDBC. Wenn ich das Projekt exportiere, wähle ich "alle benötigten Bibliotheken in lauffähiges Glas extrahieren", ich habe die JDBC auf meinem Build-Pfad.

Hier ist der Teil meines Code, den ich auf ... aufgehängt bin immer

String serverURL = **** 
String user = **** 
String pass = **** 
try { 
    conn = DriverManager.getConnection(serverURL, user, pass); 
} catch (SQLException e) { 
    //print stacktrack to a dialogbox 
} 
ResultSet rs = null; 
try { 
    rs = conn.createStatement().executeQuery("SELECT * FROM myDB"); 
} catch (SQLException e) { 
    //print stacktrack to a dialogbox 
} 

So läuft das Programm in Eclipse in Ordnung, aber wenn ich es als ein lauffähiges Glas laufen scheint die Ausführung an der Einheit zu gebieten executeQuery-Zeile. Ich habe einige JDialogs gemacht, um zu sehen, wo das Problem sein könnte, es sieht so aus, als wäre conn eingerichtet (oder zumindest ist es nicht null). Da conn nicht null ist, nehme ich an, dass die JDBC korrekt funktioniert. Das Seltsame ist, dass es keine Ausnahmen gibt, soweit ich das beurteilen kann, stoppt das Programm einfach bei der executeQuery-Zeile. Irgendwelche Ideen warum das sein könnte?

Edit: Stack-Trace, bevor das Problem auftritt

java.lang.Object.wait(Native Method) 
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) 
com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:64) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
java.lang.Thread.run(Thread.java:745) 
sun.awt.windows.WToolkit.eventLoop(Native Method) 
sun.awt.windows.WToolkit.run(WToolkit.java:306) 
java.lang.Thread.run(Thread.java:745) 
java.lang.Object.wait(Native Method) 
java.lang.Object.wait(Object.java:502) 
java.lang.ref.Reference.tryHandlePending(Reference.java:191) 
java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153) 
java.lang.Object.wait(Native Method) 
java.lang.Object.wait(Object.java:502) 
sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295) 
java.lang.Thread.run(Thread.java:745) 
java.lang.Thread.dumpThreads(Native Method) 
java.lang.Thread.getAllStackTraces(Thread.java:1607) 
HandMapper.loadRecorded(HandMapper.java:161) 
HandMapper.load(HandMapper.java:88) 
HandMapper.main(HandMapper.java:255) 
sun.awt.windows.WComponentPeer._dispose(Native Method) 
sun.awt.windows.WComponentPeer.disposeImpl(WComponentPeer.java:638) 
sun.awt.windows.WWindowPeer.disposeImpl(WWindowPeer.java:117) 
sun.awt.windows.WObjectPeer.dispose(WObjectPeer.java:88) 
java.awt.Component.removeNotify(Component.java:7042) 
java.awt.Container.removeNotify(Container.java:2820) 
java.awt.Window.removeNotify(Window.java:782) 
java.awt.Frame.removeNotify(Frame.java:1041) 
java.awt.Window$1DisposeAction.run(Window.java:1190) 
java.awt.Window.doDispose(Window.java:1206) 
java.awt.Window.dispose(Window.java:1147) 
javax.swing.SwingUtilities$SharedOwnerFrame.dispose(SwingUtilities.java:1814) 
javax.swing.SwingUtilities$SharedOwnerFrame.windowClosed(SwingUtilities.java:1792) 
java.awt.AWTEventMulticaster.windowClosed(AWTEventMulticaster.java:359) 
java.awt.Window.processWindowEvent(Window.java:2057) 
javax.swing.JDialog.processWindowEvent(JDialog.java:683) 
java.awt.Window.processEvent(Window.java:2013) 
java.awt.Component.dispatchEventImpl(Component.java:4889) 
java.awt.Container.dispatchEventImpl(Container.java:2294) 
java.awt.Window.dispatchEventImpl(Window.java:2746) 
java.awt.Component.dispatchEvent(Component.java:4711) 
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
java.awt.EventQueue.access$500(EventQueue.java:97) 
java.awt.EventQueue$3.run(EventQueue.java:709) 
java.awt.EventQueue$3.run(EventQueue.java:703) 
java.security.AccessController.doPrivileged(Native Method) 
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) 
java.awt.EventQueue$4.run(EventQueue.java:731) 
java.awt.EventQueue$4.run(EventQueue.java:729) 
java.security.AccessController.doPrivileged(Native Method) 
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 
java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
java.lang.Object.wait(Native Method) 
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) 
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) 
java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209) 
java.lang.Object.wait(Native Method) 
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) 
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) 
sun.java2d.Disposer.run(Disposer.java:148) 
java.lang.Thread.run(Thread.java:745) 
+1

ALLE Stapelspuren ausdrucken. Immer. Es gibt wichtige Informationen. –

+0

Können Sie bitte den StackTrace des Programms hinzufügen? – yorodm

+0

@yorodm Ich habe die komplette Stack-Trace hinzugefügt, bevor das Problem auftritt. Nicht sicher, ob das was du wolltest? –

Antwort

0

ich Maven empfehlen Ihre Abhängigkeiten und Ihre Anwendung zu verpacken

Ein guter Ort-Besuch https://www.mkyong.com/maven/create-a-fat-jar-file-maven-assembly-plugin/

ein Beispiel:

<project> 
[...] 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <mainClass>fully.qualified.MainClass</mainClass> 
        </manifest> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-my-jar-with-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    [...] 
    </plugins> 
    [...] 
</build> 
</project> 
Verwandte Themen