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目录结构的根目录下使用包名称,所以没有错误。
非常感谢您的回复。
答案 0 :(得分:2)
在正确的war文件中,编译的类总是在WEB-INF / classes中,运行时需要的jar文件在WEB-INF / lib中。
这绝对是导致问题的原因。这个resource应该可以帮助你从war文件中加载类。
我必须说这虽然看起来很不正统。通常,Web服务器从war文件加载类。我可以问你为什么要这样做吗?
无论如何,希望这有帮助。