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/类中。
这能成为问题的根源吗?由于我尝试使用其他jar文件(包名位于jar目录结构的根目录),所以没有出现错误。
非常感谢您的回复。
发布于 2013-10-06 05:22:50
在正确的war文件中,编译的类总是在WEB/类中,运行时需要的jars位于WEB/lib中。
这绝对是你问题的原因。这个资源应该可以帮助您从war文件中加载类。
我必须说,虽然这似乎是相当不正统的。通常,web服务器从war文件中加载类。我能问问你为什么要这么做吗?
不管怎么样,希望这能帮上忙。
https://stackoverflow.com/questions/19205441
复制相似问题