Why do I get NoClassDefFoundError: java/awt/Desktop?

佐手、 提交于 2019-12-20 05:43:05

问题


I'm trying to open an URI with Swing that I get above error.

What is the reason and how can I fix it?

When I do it in console everything is OK but when I do in GUI I get this error. I should say that I use Weblogic as server.

Code

private static void open(URI uri) {
    if (Desktop.isDesktopSupported()) {
        try {
            Desktop.getDesktop().browse(uri);
        } catch (IOException e) { /* TODO: error handling */ }
    } else { /* TODO: error handling */ }
}

Stack trace:

Exception in thread "AWT-EventQueue-1" java.lang.NoClassDefFoundError: java/awt/Desktop
at be.azvub.ext.bcfidownloder.BcfiDownloadPanel.open(BcfiDownloadPanel.java:230)
at be.azvub.ext.bcfidownloder.BcfiDownloadPanel.access$000(BcfiDownloadPanel.java:37)
at be.azvub.ext.bcfidownloder.BcfiDownloadPanel$7.actionPerformed(BcfiDownloadPanel.java:147)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:5517)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3129)
at java.awt.Component.processEvent(Component.java:5282)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3984)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3819)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1791)

回答1:


Doc on NoClassDefFoundError

The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

You do have some incorrect classloading happening. Mostly due to wrong class loader chaining.




回答2:


NoClassDefFoundError can only be caused by a classpath problem.

Because Desktop is part of jre, make sure that your classpath contains a reference to the jre library.

In Eclipse, you can go to run configurations --> Classpath and check there

UPDATE:

As Andrew suggested, you can also check you have at least java 1.6




回答3:


java.awt.Desktop has been introduced in Java 6. Chances are high you're running your code on different JRE versions.



来源:https://stackoverflow.com/questions/8984256/why-do-i-get-noclassdeffounderror-java-awt-desktop

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!