62,614
社区成员
发帖
与我相关
我的任务
分享
String classPath = "com.test.MyDerivedClass";
String libPath = "WEB-INF\\MyLibs\\MyLibs.jar";
File file = new File(libPath);
URL url = file.toURI().toURL();
URLClassLoader classLoader = new URLClassLoader(new URL[] { url }, Thread.currentThread().getContextClassLoader());
@SuppressWarnings("unchecked")
Class<? extends MyBaseClass> myClass = (Class<? extends MyBaseClass>)classLoader.loadClass(classPath);
MyBaseClass instance = myClass.newInstance();
将上述过程中的jar包放置到Tomcat WebServices的“WebContent\WEB-INF\Mylibs”下,并修改上述的libPath,就可以解决问题了。调试发现,修改前后LoadClass是调用不同的方法,修改前是java.lang.ClassLoader.loadClass,修改后是WebappClassLoader相关的一些方法。深层原因有待进一步分析。