一些背景知识:我正在尝试为NetBeans 7.3.1构建NetBeans插件 - 我必须使用这个旧版本的NetBeans,因为这是为了工作,而且部门不允许我们使用要求升级到更新版本的NetBeans。
无论如何,我在全新安装的NetBeans中启动了一个新项目。 File-> New Project,我选择了NetBeans Module。我在项目中包含一个新的Action,我按照向导创建它,根据NetBeans插件快速入门教程(适用于Google工具栏教程here)。这很有用。所有内容都会编译,插件按钮会在工具栏中按预期显示。
但是,为了做我需要的,我必须包括一些外部库,特别是org.openide.windows(通过org.openide.windows.jar)等。一旦我包含这个.jar文件,我就会得到一个NullPointerException。错误报告/堆栈跟踪在此处:
java.lang.NullPointerException
at org.netbeans.core.windows.WindowSystemImpl.load(WindowSystemImpl.java:79)
at org.netbeans.core.GuiRunLevel$InitWinSys.run(GuiRunLevel.java:231)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
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.awt.EventQueue.dispatchEvent(EventQueue.java:714)
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)
我写的绝对没有代码。我的代码"就像从NetBeans文件开始一个新的干净项目时所显示的那样 - >新建项目并选择NetBeans模块。所以我不知道它是如何成为我的代码。因为没有任何。
我错过了什么?我该怎么做才能解决这个问题,以便我可以编写插件?或者图书馆坏了吗?我已经从多个来源尝试了这个.jar库的多个版本,似乎没有任何工作。
答案 0 :(得分:0)
在同事的帮助下解决。我们尝试使用名称" Window System API"添加包含org.openide.windows的包装的JAR包作为Wrapped JAR,而不是将包含org.openide.windows的包装JAR包添加到我的项目中。在模块依赖项中。这很有效。不确定为什么我们在JAR中找到的各种版本的org.openide.windows都不起作用,并且给NetBeans带来了太多的混乱,但添加Module Dependency解决了所有问题。
答案 1 :(得分:0)
而不是compile time
尝试将dependency
添加到runtime
,以便它在编译时和运行时都可用,请尝试添加它,如
文件 - >项目属性 - > libraries->运行时库。