ClassLoader loadClass抛出ClassNotFoundException

时间:2013-10-06 04:29:23

标签: java classloader

String pathToJar = "C:\\Users\\dtn\\jb_workspace\\helloworld-mdb\\target\\jboss-as-helloworld-mdb.war";

URL[] urls = { new URL("jar:file:///" + pathToJar+"!/") };
URLClassLoader urlcl = new URLClassLoader(urls);
urlcl.loadClass("org.jboss.as.quickstarts.mdb.HelloWorldTopicMDB");

我得到的例外是:

Exception in thread "main" java.lang.ClassNotFoundException: org.jboss.as.quickstarts.mdb.HelloWorldTopicMDB

当我调查问题时,我看到 HelloWorldTopicMDB.class 文件存储在WEB-INF / classes中。

可以以某种方式解决问题的根源吗?因为我尝试使用其他jar文件,在jar目录结构的根目录下使用包名称,所以没有错误。

非常感谢您的回复。

1 个答案:

答案 0 :(得分:2)

在正确的war文件中,编译的类总是在WEB-INF / classes中,运行时需要的jar文件在WEB-INF / lib中。

这绝对是导致问题的原因。这个resource应该可以帮助你从war文件中加载类。

我必须说这虽然看起来很不正统。通常,Web服务器从war文件加载类。我可以问你为什么要这样做吗?

无论如何,希望这有帮助。