Почему я получаю NoClassDefFoundError: java / awt / Desktop? - PullRequest
0 голосов
/ 24 января 2012

Я пытаюсь открыть URI с помощью Swing, который выдает ошибку выше.

В чем причина и как я могу это исправить?

Когда я делаю это в консоли, все в порядке, но когда я делаю в 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 голосов
/ 24 января 2012

Документ на NoClassDefFoundError

Поиск класса для определения существовал, когда выполняемый в данный момент класс был скомпилирован, но определение больше не может быть найдено.

У вас происходит некорректная загрузка классов. Главным образом из-за неправильной цепочки загрузчика классов.

0 голосов
/ 07 мая 2013

java.awt.Desktop был введен в Java 6 . Скорее всего, вы запускаете свой код на разных версиях JRE.

0 голосов
/ 24 января 2012

NoClassDefFoundError может быть вызвано только проблемой classpath .

Поскольку Desktop является частью jre , убедитесь, что ваш classpath содержит ссылку на библиотеку jre .

В Eclipse вы можете перейти к запустить конфигурации -> Classpath и проверить там

UPDATE:

Как предположил Эндрю, вы также можете проверить, что у вас есть хотя бы java 1.6

...