为什么我得到NoClassDefFoundError:java / awt / Desktop?

时间:2012-01-24 09:09:55

标签: java swing exception weblogic noclassdeffounderror

我正在尝试使用Swing打开一个URI,我发现错误。

是什么原因以及如何解决?

当我在控制台中执行此操作时,一切正常,但是当我在GUI中执行此操作时,我收到此错误。 我应该说我使用Weblogic作为服务器。

代码

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

堆栈跟踪:

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)

3 个答案:

答案 0 :(得分:0)

NoClassDefFoundError只能由类路径问题引起。

由于Desktop jre 的一部分,请确保您的类路径包含对 jre 库的引用。

Eclipse 中,您可以转到运行配置 - > Classpath 并检查

<强>更新

正如安德鲁所说,你也可以检查你至少有java 1.6

答案 1 :(得分:0)

Doc NoClassDefFoundError

在编译当前正在执行的类时存在搜索的类定义,但无法再找到该定义。

您确实发生了一些错误的类加载。主要是由于错误的类加载器链接。

答案 2 :(得分:0)

java.awt.Desktop已被引入in Java 6。您可能会在不同的JRE版本上运行代码。