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

为什么打的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 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记