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

Netbeans Swing GUI构建器不能与Java模块项目和Maven一起工作

蒋默
2023-03-14

我想使用NetBeans的Swing GUI构建器以及Maven项目和java模块。似乎GUI构建器找不到编译的类,如果它们是作为java模块的一部分编译的。它给出了错误“加载组件(...)中的错误不能加载组件类(...)”(参见示例末尾截图中的整个错误)

我把它归结为一个最小的例子,使用Netbeans 11:

>

  • 文件>New Project>Java with Maven>Java Application(使用默认建议并单击Finish)

    使用GUI构建器,将JPanel的一个实例添加到JFrame,方法是在设计模式下打开JFrame,并将JPanel拖动到JFrame。

    通过添加文件src/main/java/module-info.java,将项目更新为使用java模块:

    module MavenGuiTest {
        requires java.desktop;
        requires java.logging;
    }
    
    

    单击Yes,以下内容将被添加到pom.xml中:

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.6.1</version>
                </plugin>
            </plugins>
        </build>
    

    java.lang.ClassNotFoundException: com.mycompany.mavenproject1.NewJPanel
        at org.netbeans.modules.form.project.ProjectClassLoader.findClass(ProjectClassLoader.java:163)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at org.netbeans.modules.form.project.FormClassLoader.findClass(FormClassLoader.java:58)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:398)
        at org.netbeans.modules.form.project.ClassPathUtils.loadClass(ClassPathUtils.java:89)
        at org.netbeans.modules.form.FormUtils.loadClass(FormUtils.java:1552)
        at org.netbeans.modules.form.PersistenceObjectRegistry.loadClass(PersistenceObjectRegistry.java:73)
        at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:673)
        at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
        at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:484)
        at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:260)
        at org.netbeans.modules.form.FormEditor$2.run(FormEditor.java:327)
        at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:268)
        at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEventAccess(NbMutexEventProvider.java:115)
        at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:75)
        at org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:71)
        at org.openide.util.Mutex.readAccess(Mutex.java:225)
        at org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:251)
        at org.netbeans.modules.form.FormEditor.loadFormData(FormEditor.java:324)
        at org.netbeans.modules.nbform.FormEditorSupport.loadOpeningForm(FormEditorSupport.java:436)
        at org.netbeans.modules.nbform.FormDesignerTC.loadForm(FormDesignerTC.java:256)
        at org.netbeans.modules.nbform.FormDesignerTC.access$300(FormDesignerTC.java:64)
        at org.netbeans.modules.nbform.FormDesignerTC$PreLoadTask$1.run(FormDesignerTC.java:245)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    
    

    我想不出如何修复它,也没有找到任何解决办法。

  • 共有1个答案

    桑坚成
    2023-03-14

    这只是一个警告,而不是错误。即使发生这种情况,也可以运行此项目。此警告显示这些事情何时发生。

    1. 将一个版本切换到另一个版本时。
    2. 项目中的库未使用或已损坏。尝试删除此类库。
    3. 您以前有一个自定义GUI组件,您修改了该类,新IDE不再识别它。那里只需按允许编辑按钮,并执行清洁和构建(扫帚和锤子图标)。构建完成后,关闭NetBeans并重新打开它。
     类似资料:
    • 我是Maven和Jenkins的新手,所以请耐心等待我... 我有一个Maven项目,当我从项目文件夹中运行mvn install时,它可以正确构建,但是当我尝试通过Jenkins构建时,根本无法解决任何依赖项。我是否在我的 Maven 或 Jenkins 设置中遗漏了某些内容/搞砸了某些内容? 项目POM和. m2/settings.xml如下... pom.xml .m2/设置.xml

    • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!

    • 编译项目 当我们只想对修攺过的文件进行编译时就会使用Make进行编译.它可以指定对项目(Project)或模块(Module)进行编译. 编译项目会同时编译当前项目中所有的模块 ,如果代码较多, 编译时间会比较长.如果想编译快一点需要指定编译某个模块. 操作步骤: 菜单栏 --> Build --> Make Project 快捷键: Mac: Command + F9 Windows\/Linu

    • 问题内容: 我能正确理解吗,Java生成器将scr路径上的源重新编译为输出路径,如果激活了自动构建或通过“ ctrl + b”或抛出javac的验证错误,通常会在每个“ ctrl + s”之后发生。 至于Maven2Bulder。我只是克隆了m2e-core git存储库,并且有相应的类org.eclipse.m2e.core.internal.builder.MavenBuilder,这是相当复

    • 问题内容: 我有一个多模块Maven项目,其中有多个微服务作为模块,因此我的父母中列出了一些模块,如下所示: 这里是依赖项,因此我在下面列出了依赖项 : 当我在本地运行时,按预期方式在被调用之前,但是在詹金斯中,它正在尝试构建然后使构建失败说: 我是否需要运行其他作业或重新排序模块,从本地到Jenkins有什么不同?感谢对此的任何帮助。 问题答案: 众所周知,问题在于子模块之间的依赖关系失败,因为

    • 关于maven项目结构,我有两个问题: 1)我正在创建一个maven多模块项目,并且想知道是否可以将模块的所有公共依赖项放在父POM中?这是正确的做法吗? 2)如果我正在创建一个包含所有web.xml和JSP文件的maven webapp项目,那么web控制器、侦听器和模型对象应该驻留在哪里?在一个单独的maven jar项目中还是在同一个webapp项目中?