在运行代码时,什么会导致java.lang.ClassNotFoundException?

3

这个错误 : java.lang.ClassNotFoundException : javax.xml.soap.SoapException

我能看到 javax.xml.soap.SoapException 已经在classpath中,那么是什么导致了这个错误?

更普遍地说,在运行代码时如何抛出一个 java.lang.ClassNotFoundException,编译器不应该会捕获这个错误吗?唯一可能发生这种情况的情况就是,如果使用一个库构建了一个jar,并且使用该jar时所依赖的库不在classpath中。


1
它真的在寻找javax.xml.soap.SOAPException吗?因为那个类并不存在。然而,javax.xml.soap.SoapException是存在的。 - rmlan
这意味着找不到该类。可能是该类存在于执行环境的某个地方,但在发生错误时访问的类路径中不存在。 - Hot Licks
如果应用程序的组件尝试使用自定义类加载器来加载一个类,而该类在该加载器的路径中未找到,则即使该类在主类路径中,您也可能会遇到此错误。 - Hot Licks
1
@rmlan 应该是 javax.xml.soap.SOAPException - vandale
这肯定是Java中的SOAPException。.NET有一个叫做SoapException的类 - 也许混淆就来自于此。 - Dawood ibn Kareem
2个回答

1
一种可能性:

Class.forName("this.will.throw.ClassNotFoundException")

1

编译应用程序时使用的类路径与运行应用程序时使用的类路径不同。当使用Java运行应用程序时,仍需要使用-cp来加载所有支持的JAR文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接