首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss7EAP中属于用户定义jar的类的java.lang.NoClassDefFoundError

JBoss7EAP中属于用户定义jar的类的java.lang.NoClassDefFoundError
EN

Stack Overflow用户
提问于 2017-02-08 10:17:52
回答 1查看 1.8K关注 0票数 2
代码语言:javascript
复制
02:35:43,076 WARN  [org.jboss.modules] (default task-8) Failed to define class com.karthik.db.jpub.mapping.ObjUser in Module "deployment.CVRepo.war:main" from Service M
odule Loader: java.lang.NoClassDefFoundError: Failed to link com/karthik/db/jpub/mapping/ObjUser (Module "deployment.CVRepo.war:main" from Service Module Loader): oracle/sql/ORAData
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:446)
        at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:274)
        at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:78)
        at org.jboss.modules.Module.loadModuleClass(Module.java:605)
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)

在这里,ObjUser类属于Data.jar。Data.jar存在于CVRepo.war的WEB/lib文件夹中

1)即使包含类- data.jar的jar - ObjUser.class封装在CVRepo.war中,导致此错误的原因仍然是什么。

2)是否应该从WAR的WEB/lib文件夹中删除外部jars(data.jar),并将其添加为模块,并在JBOSS 7?中的WAR的JBos-Deployment.xml中引用

EN

回答 1

Stack Overflow用户

发布于 2017-02-09 12:44:07

引发NoClassDefFoundError通常是因为类不在类路径中,这可能是由于应用程序的打包或指定的类加载器隔离设置造成的。查看Tattletale :类位置,定位打包的位置,并与为特定部署类型定义的隔离设置& Java类路径进行比较。

注意:如果应用程序中不存在类,而且java源文件没有列出类,则使用javap或其他反编译器对类进行反编译,并查看类定义是否与源匹配。有些IDE可以在类路径缺少类时生成无效类,它们可以生成一个类引用无效的类,如果这些类被部署,将导致不寻常的ClassNotFoundExceptions,比如没有包的类名。

当JVM试图加载类的定义而找不到定义时,就会引发NoClassDefFoundError。NoClassDefFoundError通常是由ClassNotFoundException或ExceptionInInitializerError引起的。在初始的ClassNotFoundException / ExceptionInInitializerError之后,JVM只会抛出一个NoClassDefFoundError,而不会显示最初的原因。

检查完整的server.log并找到第一个类加载异常

参考链接基本类加载材料:https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42110325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档