4

假设一组简单的项目 A、B、C,每个项目都需要使用同一个公共项目 Z。所有部分都在持续开发中。

所以我们将项目 Z 作为库添加到 A、B 和 C。

作为示例细节:A 类有一个方法,main()。Z 类是一个简单的基于 JFrame 的表单。Z 包含 NB IDE 的默认 main() 来实例化表单,因此它可以单独运行,但在示例使用中,A.main() 调用 Z.main() 来显示表单。

这适用于 Z 类中的简单表单。

但是,假设我们从 SwingX 或其他非标准库向 Z 类的表单添加组件。此自动将相应的库依赖项添加到项目 Z。我们可以通过直接运行 Z.main() 来测试 Z - 工作正常。但是,如果我们现在重新编译并运行 A.main(),则会引发异常:找不到 SwingX(或其他)库。

这可以通过将 Z 的依赖项也添加到 A 来实现。所以问题似乎是这种将某些项目添加为库的机制并没有考虑添加其他库/项目的依赖项。

什么是正确的解决方案?

Netbeans 7.2,使用 ANT。

可能是这些缺乏检查答案的类似问题的重复:

在 netbeans 中添加其他项目作为库

Netbeans - 添加当前正在编辑的库

4

1 回答 1

3

此问题的主题包含在此 NetBeans 错误报告中: Bug 47507 - [40cat] Transitively required libraries not automatically added to runtime classpath

令人难以置信的是,它已经活跃了八年多,并且受到了 19 个重复问题的影响。这个问题有很长的讨论线索。用户“fommil”在 2008 年 1 月 10 日提供了一种适度有用的解决方法:

“我的解决方法是,对于每个“[依赖库]项目”,我在库管理器中定义一个名为“library.dep”的库。这是我为该项目的依赖项定义类路径、源代码和 javadocs 的地方。然后,如果另一个项目曾经依赖于“项目”,我将“project.dep”添加到它的运行时(和测试运行时)依赖项中。”

fommil 继续讨论这种方法的缺点,但也许总比没有好。

无论如何,我将宣布这个问题“已回答”,即使没有“解决”。

于 2012-12-04T02:50:02.353 回答