简体   繁体   中英

SQuirreL Configure: could not initial class org.apache.phoenix.jdbc.PhoenixDriver

When I am configuring SQuirreL(3.7.1),throws this error:

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)

在此处输入图片说明

This is the detail log:

That error message suggests that the JVM has already tried and failed to perform static initialization of the class org.apache.phoenix.jdbc.PhoenixDriver .

If the JVM fails to statically initialize a class, perhaps because a class it depends on is missing or some code in a static { ... } block threw an exception, then the JVM will not try a second time to load this class. It will simply throw a NoClassDefFoundError as you have seen. You will need to restart the JVM to get it to try to load the driver class again. Restart SQuirreL, try to connect to Phoenix again and see if you get a different error message first time.

Looking at the source code of this class , static initialization could fail if (a) the slf4j JAR is missing, (b) the application you are running has a SecurityManager that denies permission to add a shutdown hook, or (c) the JVM fails to create an instance of its superclass, PhoenixEmbeddedDriver . The superclass depends on commons-logging, so another possible cause could be that the commons-logging JAR is missing.

However, these are only my guesses as to what the problem is. As far as I can see the only way to be sure is to restart SQuirreL and see if you get a different exception message first time.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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