当前位置: 首页 > 知识库问答 >
问题:

找不到javax.swing.joptionPane的Netbeans异常类

沈成天
2023-03-14

我对Java和Netbeans平台编程非常熟悉,我在10个Netbeans API(文件系统)的示例中遇到了这个非常奇怪的问题。我使用的是Ubuntu 14.10,Java JDK 8,Netbeans 8.0.1

我想在点击菜单元素后在swing消息框中显示一些数据。导入很好,dep库很好,所有编译都很好。但当我点击我的超级菜单项时,我有例外:

java.lang.ClassNotFoundException: javax.swing.JOptionPane not found by org.netbeans.word.module.fsdemo [42]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)
    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)
Caused: java.lang.ClassNotFoundException: *** Class 'javax.swing.JOptionPane' was not found because bundle org.netbeans.word.module.fsdemo [42] does not import 'javax.swing' even though bundle org.apache.felix.framework [0] does export it. Additionally, the class is also available from the system class loader. There are two fixes: 1) Add an import for 'javax.swing' to bundle org.netbeans.word.module.fsdemo [42]; imports are necessary for each class directly touched by bundle code or indirectly touched, such as super classes if their methods are used. 2) Add package 'javax.swing' to the 'org.osgi.framework.bootdelegation' property; a library or VM bug can cause classes to be loaded by the wrong class loader. The first approach is preferable for preserving modularity. ***
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1968)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Caused: java.lang.NoClassDefFoundError: javax/swing/JOptionPane
    at org.netbeans.word.module.fsdemo.MenuViewer.actionPerformed(MenuViewer.java:33)
    at org.openide.awt.AlwaysEnabledAction$1.run(AlwaysEnabledAction.java:199)
    at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
    at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
    at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
    at org.openide.awt.AlwaysEnabledAction.actionPerformed(AlwaysEnabledAction.java:202)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:719)
    at java.awt.EventQueue$4.run(EventQueue.java:717)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] 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)

我试图导入所有javax.spring.*包,但它根本不起作用。有趣的是,因为在其他类型的模块的类(如windows)中,相同的代码可以正常工作。下面是我想要复习的代码:


    package org.netbeans.word.module.fsdemo;

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JOptionPane;
    import org.openide.awt.ActionID;
    import org.openide.awt.ActionReference;
    import org.openide.awt.ActionRegistration;
    import org.openide.filesystems.FileObject;
    import org.openide.filesystems.FileUtil;
    import org.openide.util.NbBundle.Messages;

    @ActionID(
            category = "Edit",
            id = "org.netbeans.word.module.fsdemo.MenuViewer"
    )
    @ActionRegistration(
            displayName = "#CTL_MenuViewer"
    )
    @ActionReference(path = "Menu/Edit", position = 2600, separatorBefore = 2550, separatorAfter = 2650)
    @Messages("CTL_MenuViewer=Viewer")
    public final class MenuViewer implements ActionListener {

        private FileObject root;
        private FileObject dir;

        @Override
        public void actionPerformed(ActionEvent event) {
            root = FileUtil.getConfigRoot();
            dir = root.getFileObject("Menu");
            for (FileObject oneItem : dir.getChildren()) {
                JOptionPane.showMessageDialog(null, "Info", oneItem.getName(), JOptionPane.INFORMATION_MESSAGE);
            }
        }
    }

共有1个答案

从景曜
2023-03-14

这是因为使用了OSGi框架。OSGi是模块化系统的标准,其中模块(由一些(版本化的)JAR组成的“bundle”)可能与其他模块相关而被孤立地加载。它有一个终身管理和模块的分离--用特定的类加载器实现。

这是一个比Java提供的更加严格的模块化系统,具有可见性和指定的版本依赖关系。一些特征最终将被纳入Java。

因此为Swing添加一个bundle依赖项。不幸的是,我现在没有NetBeans IDE来检查。

 类似资料:
  • 问题内容: 我最近在Windows 8.1机器上安装了JDK8 + Netbeans8(从Oracle网站下载了捆绑安装程序)。 当我创建一个非常简单的JavaFX FXML应用程序时,它可以正常工作。但是,当我使用向导添加一个新的数据库实体类并对其进行编译时,得到以下堆栈跟踪: 但是,如果我注释掉实体类中的注释或将目标平台从1.8更改为1.7,则应用程序将被编译而没有任何问题。 是NetBean

  • 问题内容: 我从这篇博客文章中获得了帮助: 但是我发现com.mysql.jdbc.driver类未找到异常。那篇博客文章的不同之处在于,在我的案例中,他们尝试连接到mysql而不是MS SQL。到目前为止,这是我的代码:package com.example.dbtry; 请告诉我我在做什么错。我还在清单中添加了对Internet的许可。 问题答案: 从以下位置下载jar:http://www.

  • 我正在尝试一个简单的教程 将java程序连接到简单的java数据库 使用NetBeans 7 IDE 这是教程的链接。 但当我运行该项目时,NetBeans给了我以下错误: 下面是主类的代码: 欢迎任何人提出建议。

  • 问题内容: 我正在尝试从Hibernate和Maven开始项目。 我有这样的例外: 这是我的项目结构的屏幕截图(hibernate.cfg.xml在src /中):http : //imageshack.us/photo/my- images/692/screenshotxba.jpg/ CrudsOps.java pom.xml 该异常的根源可能是什么? 问题答案: 正如@JBNizet所说,您

  • 现在,在你报告这是一个已经被问过的问题之前,听我说完。 我已经看了所有其他问题,没有一个提供答案--我已经试过了所有的问题。此外,它们都至少有一年了,所以我猜答案不再起作用的原因是Netbeans一定已经更新了。 -CoolKat

  • 对于一个项目,我试图实现JSCSSMergeServlet servlet。 在完全按照说明并通过Maven启动Jetty之后 我得到一个错误的说法: 是否有一些其他文件我需要修改,以便使这个启动和运行?