m0_37320995 2018-11-28 16:28 采纳率: 0%
浏览 9971
已结题

为什么打的jar包,引用的其它jar包里面的类运行时找不到报NoClassDefFoundError?

Web工程,部署在linux系统weblogic目录下, 所有jar包都在lib目录下,新打了个jar包,这个jar包里面的一个类引用了另一个jar包里面的类
,然后运行时jvm却找不到这个类,NoClassDefFoundError,但这个类明明在jar包里面存在

        是怎么回事,是打包时要注意什么吗,我用eclipse打的
  • 写回答

4条回答 默认 最新

  • davidsu1973 2018-11-28 16:56
    关注

    出现NoClassDefFoundError错误,应该是jvm在编译时能找到引用的类,而在运行时找不到引用的类导致的错误。就是说在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致错误。
    检查下有没把对应的类加载到classpath中,或者检查为什么类在classpath中是不可用的;
    类并没有在jar文件的manifest文件中的classpath属性中定义;
    可能程序的启动脚本覆盖了原来的classpath环境变量;
    因为NoClassDefFoundError是java.lang.LinkageError的一个子类,所以可能由于程序依赖的原生的类库不可用而导致;
    检查日志文件中是否有java.lang.ExceptionInInitializerError这样的错误,NoClassDefFoundError有可能是由于静态初始化失败导致的;
    环境中有多个不同的类加载器,也可能导致NoClassDefFoundError;
    诊断方法:
    在程序中打印出System.getproperty(“java.classpath”),可以得到程序实际运行的classpath;
    运行时明确指定你认为程序能正常运行的 -classpath 参数,如果增加之后程序能正常运行,说明原来程序的classpath被其他程序修改覆盖了。

    评论

报告相同问题?

悬赏问题

  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥85 maple软件,solve求反函数,出现rootof怎么办?
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题