2016-10-24 2 views
0

Wenn ich SQuirreL bin Konfiguration (3.7.1), um diesen Fehler führt:SQuirreL konfigurieren: Es konnte keine Einstiegsklasse org.apache.phoenix.jdbc.PhoenixDriver

could not initial class org.apache.phoenix.jdbc.PhoenixDriver 


java.lang.NoClassDefFoundError: Could not initialize class org.apache.phoenix.jdbc.PhoenixDriver 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at java.lang.Class.newInstance(Class.java:442) 
    at net.sourceforge.squirrel_sql.fw.sql.SQLDriverManager.registerSQLDriver(SQLDriverManager.java:75) 
    at net.sourceforge.squirrel_sql.fw.sql.SQLDriverManager$MyDriverListener.propertyChange(SQLDriverManager.java:197) 
    at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) 
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) 
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263) 
    at net.sourceforge.squirrel_sql.fw.util.PropertyChangeReporter.firePropertyChange(PropertyChangeReporter.java:65) 
    at net.sourceforge.squirrel_sql.fw.sql.SQLDriver.setJarFileNames(SQLDriver.java:277) 
    at net.sourceforge.squirrel_sql.client.gui.db.DriverInternalFrame.applyFromDialog(DriverInternalFrame.java:246) 
    at net.sourceforge.squirrel_sql.client.gui.db.DriverInternalFrame.performOk(DriverInternalFrame.java:221) 
    at net.sourceforge.squirrel_sql.client.gui.db.DriverInternalFrame.access$200(DriverInternalFrame.java:57) 
    at net.sourceforge.squirrel_sql.client.gui.db.DriverInternalFrame$3.actionPerformed(DriverInternalFrame.java:373) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6535) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6300) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4891) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
    at java.awt.Container.dispatchEventImpl(Container.java:2280) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:731) 
    at java.awt.EventQueue$4.run(EventQueue.java:729) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
    at net.sourceforge.squirrel_sql.client.Main$1.dispatchEvent(Main.java:99) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

enter image description here

Dies ist das Detail log:

+0

Haben Sie verifiziert, dass das Jar, das Sie im Klassenpfad haben, die angegebene Treiberklasse enthält? –

Antwort

1

Diese Fehlermeldung weist darauf hin, dass die JVM bereits versucht hat und keine statische Initialisierung der Klasse org.apache.phoenix.jdbc.PhoenixDriver durchführen konnte.

Wenn die JVM eine Klasse nicht statisch initialisiert, weil eine davon abhängige Klasse fehlt oder ein Code in einem static { ... }-Block eine Ausnahme auslöst, versucht die JVM ein zweites Mal nicht, diese Klasse zu laden. Es wird einfach eine NoClassDefFoundError werfen, wie Sie gesehen haben. Sie müssen die JVM neu starten, damit sie erneut versucht, die Treiberklasse zu laden. Starten Sie SQuirreL neu, versuchen Sie erneut, eine Verbindung zu Phoenix herzustellen, und sehen Sie, ob Sie beim ersten Mal eine andere Fehlermeldung erhalten. Wenn Sie die source code of this classsource code of this class betrachten, kann die statische Initialisierung fehlschlagen, wenn (a) die SLF4J-JAR fehlt, (b) die Anwendung, die Sie ausführen, über einen SecurityManager verfügt, der die Berechtigung verweigert, einen Shutdown-Hook hinzuzufügen, oder (c) die JVM fehlschlägt um eine Instanz seiner Oberklasse zu erstellen, PhoenixEmbeddedDriver. Die Superklasse hängt von der Commons-Protokollierung ab. Eine andere mögliche Ursache könnte sein, dass die Common-Logging-JAR fehlt.

Allerdings sind dies nur meine Vermutungen, was das Problem ist. Soweit ich sehen kann, ist der einzige Weg, sicher zu sein, SQuirreL neu zu starten und zu sehen, ob Sie beim ersten Mal eine andere Ausnahmebedingung erhalten.

+0

Ich neustart und es war ok.Ich weiß nicht, es sollte neu starten.Vielen Dank! – Dolphin

Verwandte Themen