当在NetBeans插件模块中包含org.openide.windows时,库中的NullPointerExceptio



一些背景:我正在尝试为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库的多个版本,似乎没有任何工作。

在同事的帮助下解决。我们没有将包含org.openide.windows的打包JAR包作为打包JAR添加到我的项目中,而是尝试在模块依赖项中以名称"窗口系统API"添加包。这工作。不知道为什么我们在jar中发现的org.openide.windows的各种版本都不起作用,并且给NetBeans造成了如此多的混乱,但是添加模块依赖解决了所有问题。

代替compile time,尝试将dependency添加到runtime,以便它在编译时和运行时都可用,尝试添加它,如

File -> project properties -> libraries-> runtime libraries.

相关内容

  • 没有找到相关文章