0

我有一个具有静态最终方法的类。[说 A,B,C] 。C调用另一个类D [D的包在C中导入]我没有包D的maven程序集jar [say M.jar]。在运行时,当我尝试调用在类路径中有M.jar的A时,得到noclasdef 错误说 D 不存在。

为什么我会得到这个?请分享你的想法

包 TEST1 导入 test.CHECK.TestA; 导入 test.CHECK.TestB;类工厂

{

final static int A() { //一些参考 test.CHECK.TestA }

static int B() { //一些参考 test.CHECK.TestB }

静态整数 C() { }

我有包含此类的 jar,并在该 jar 中打包 test.CHECK.TestB。但是,此 jar 不包含 test.CHECK.TestA。

现在,我的客户端程序有这个 jar 调用 c()。然后,虽然我们没有调用 A(),但为 TestA 获取 ClassNotFoundException。为什么会这样?

4

1 回答 1

0

我假设您正在使用 Maven,并且我也假设您有两个项目。

您已经说过,在您的 Jar 中您没有 testA 类,那么该类不会添加到类路径中,然后 jvm 无法找到使用它。

您必须考虑到您要在应用程序中使用的任何类都必须添加到应用程序类路径中。这可以添加到这个 Jar 或另一个 Jar 中,o 免费,但必须添加。

我希望能帮助你。

于 2013-06-20T07:12:56.267 回答