一些背景:我正在尝试为NetBeans 7.3.1构建一个NetBeans插件-我必须使用这个旧版本的NetBeans,因为这是为了工作,而且部门不允许我们强制升级到新版本的NetBeans。
无论如何,我在新安装的NetBeans中开始了一个新项目。文件->新项目,我选择NetBeans模块。我在项目中包含一个新的Action,我按照向导创建它,就像NetBeans插件快速入门教程一样(这里是Google工具栏教程)。这很有效。一切都编译好了,插件按钮按预期出现在工具栏中。
然而,要做我需要的,我必须包括一些外部库,特别是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库的多个版本,似乎没有任何工作。
代替compile time
,尝试将dependency
添加到runtime
,以便它在编译时和运行时都可用,尝试添加它,如
File -> project properties -> libraries-> runtime libraries.