- 我在
/tomcat/lib
目录下有一个类SharedClass
(这个类被所有的Web应用程序共享) - 我在我的Web应用程序的
WEB-INF/lib
目录下有一个类LocalClass
SharedClass
引用了LocalClass
我尝试创建SharedClass
的一个实例,但是失败了,并显示以下消息:
NoClassDefFoundError: LocalClass.
由于SharedClass
是被共享的,而LocalClass
是本地的,所以我希望它能够正常工作,但是它没有。
我怀疑SharedClass
是由Tomcat父类加载器加载的,而LocalClass
是由Web应用程序类加载器加载的。由于SharedClass
是由父级加载的,我认为它的所有依赖项也必须由父级加载。因此,父级找不到LocalClass
并抛出错误。
这有道理吗?有没有什么方法可以解决这个问题(而不编写自己的类加载器)?
SharedClass
直接引用了LocalClass
。在这种情况下,我展示的上下文类加载器技巧将不起作用,您需要将JAR文件打包在一起。 - parsifal