从另一个项目中定义的类调用静态方法需要为两个项目添加库

时间:2013-07-12 16:44:40

标签: java

我的NetBeans窗口中有两个项目

MyProject
  Tester.java
Utilities
  Utils.java

Utils.java文件包含许多我们可以重复使用的其他人编写的静态方法。最近我向Utils.java添加了一组使用新外部jar的静态方法。我通过Utilities

将库添加到Properties --> Libraries --> Add Library项目中

然后我继续从Tester.java内部调用这些方法,但是对于在这些外部库中定义的类,收到java.lang.NoClassDefFoundError个例外。当我从Utilities项目中调用方法时,不会发生这种情况。

我通过向MyProject项目添加所需的库来解决了这个问题,但是我有必要这样做吗?

2 个答案:

答案 0 :(得分:1)

您需要在MyProject中拥有外部库,因为它过渡依赖于这些库。您将获得java.lang.NoClassDefFoundError,因为在编译时可以使用所需的类来构建jar,但运行时缺少这些类。

答案 1 :(得分:1)

原因很简单:Utils.class依赖于库中的类来工作。因此,如果您在类路径中没有库的类,Utils.class将无法工作。就像只有一个加速器不足以让汽车移动。没有汽车发动机,加速器就无法工作。事实上,作为驾驶员,您不会直接弄乱发动机,而只能通过加速器,并不意味着发动机不是必需的。 (对不起这个车类比,但希望它能让事情变得更清楚。)