Glassfish java.lang.NoClassDefFoundError在将webapp用作依赖项时出错
我正在尝试在不重新部署webapp存档的情况下扩展webapp功能。应用程序在GlassFish3下运行 基本上,我所做的是:Glassfish java.lang.NoClassDefFoundError在将webapp用作依赖项时出错,java,glassfish,classpath,Java,Glassfish,Classpath,我正在尝试在不重新部署webapp存档的情况下扩展webapp功能。应用程序在GlassFish3下运行 基本上,我所做的是: webapp.war包含一些属于webapplication的part.jar。它包含一些类SomeClass。Webapp允许一些自定义配置,其中可以使用Class.forName动态加载SomeClass的后代 我从SomeClass派生了ExtensionClass(ExtensionClass-extensionsomeclass),用part.jar编译了它,
webapp.war
包含一些属于webapplication的part.jar
。它包含一些类SomeClass
。Webapp允许一些自定义配置,其中可以使用Class.forName
动态加载SomeClass
的后代
我从SomeClass
派生了ExtensionClass
(ExtensionClass-extensionsomeclass
),用part.jar
编译了它,得到了一些extension.jar
我试图将extension.jar
放入domain/lib
和domain/lib/ext
。但加载ExtensionClass
时,应用程序会显示java.lang.NoClassDefFoundError:SomeClass
(注意,它是关于父类的)。似乎加载库的classloader找不到webapp中包含的基类
目标:我想使用依赖项扩展应用程序,但不需要重建
问题:在这种情况下可以做什么
编辑
如果我把我的
扩展名.jar
放入应用程序/mywebapp/WEB-INF/libs
中,它显然会工作,就像我把它放入webapp.war
本身一样。但是它非常脏,我想解决它,不做这些脏事,也不碰webapp.war
你看到了吗?要从域/lib加载类,您需要获得Common
classloader或其一些后代。我不确定应该从哪里获得它的try current thead classloaderThread.currentThread().getContextClassLoader()
。还是我误解了你的问题?我认为您只需要在运行时从domain/lib加载并实例化某个类,而不仅仅是某个类。有些类来自domain/lib,但那个类是从webapp本身扩展的。