我的NetBeans窗口中有两个项目
MyProject
Tester.java
Utilities
Utils.java
Utils.java
文件包含许多我们可以重复使用的其他人编写的静态方法。最近我向Utils.java
添加了一组使用新外部jar的静态方法。我通过Utilities
Properties --> Libraries --> Add Library
项目中
然后我继续从Tester.java
内部调用这些方法,但是对于在这些外部库中定义的类,收到java.lang.NoClassDefFoundError
个例外。当我从Utilities
项目中调用方法时,不会发生这种情况。
我通过向MyProject
项目添加所需的库来解决了这个问题,但是我有必要这样做吗?
答案 0 :(得分:1)
您需要在MyProject中拥有外部库,因为它过渡依赖于这些库。您将获得java.lang.NoClassDefFoundError,因为在编译时可以使用所需的类来构建jar,但运行时缺少这些类。
答案 1 :(得分:1)
原因很简单:Utils.class
依赖于库中的类来工作。因此,如果您在类路径中没有库的类,Utils.class
将无法工作。就像只有一个加速器不足以让汽车移动。没有汽车发动机,加速器就无法工作。事实上,作为驾驶员,您不会直接弄乱发动机,而只能通过加速器,并不意味着发动机不是必需的。 (对不起这个车类比,但希望它能让事情变得更清楚。)