有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ant是什么导致了java。lang.NoClassDefFoundError是否随机发生?

我们的服务器随机出现NoClassDefFoundError。它偶尔会抛出这个错误,大多数时候它运行时不会抛出任何问题。为什么会有这种奇怪的行为?以下是例外

java.lang.NoClassDefFoundError: Could not initialize class com.github.junrar.Archive
at org.apache.tika.parser.pkg.RarParser.parse(RarParser.java:75)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:143)
at org.apache.tika.Tika.parseToString(Tika.java:527)
at org.apache.tika.Tika.parseToString(Tika.java:602)
at com.xxx.attachment.AttachmentExtractionAPI.parse(AttachmentExtractionAPI.java:108)

com.github.junrar.Archive存在于包含其他tika依赖项的同一个jar中

我试着查了一下档案的内容。JAVA在静态块中查找一些可能的运行时异常。但它本身没有静态块。是什么让它随机抛出异常,并在没有任何问题的情况下运行

编辑:-

我们用蚂蚁建造房屋。下面是ant的部分。控制tika依赖项的属性。Junrar是tika的一部分

tika_jar_file=${prod_home}/tikalib/tika-app-1.24.jar
tika_jar_srcdir=${tp_pkg}/tika
tika_jar_includes=**
tika_jar_excludes=org/apache/tika/parser/** org/apache/xerces/** org/apache/html/** org/apache/wml/** org/apache/xml/** org/xml/sax/** org/apache/xmlcommons/** javax/xml/** org/w3c/dom/**

tika_update_jar_file=${prod_home}/tikalib/tika-app-1.24.jar
tika_update_jar_srcdir=${tp_pkg}/tika
tika_update_jar_includes=org/apache/tika/parser/asm/** org/apache/tika/parser/chm/** org/apache/tika/parser/code/** org/apache/tika/parser/epub/** org/apache/tika/parser/html/** org/apache/tika/parser/iwork/** org/apache/tika/parser/mail/** org/apache/tika/parser/mbox/** org/apache/tika/parser/microsoft/** org/apache/tika/parser/odf/** org/apache/tika/parser/pdf/** org/apache/tika/parser/pkg/** org/apache/tika/parser/rtf/** org/apache/tika/parser/strings/** org/apache/tika/parser/txt/** org/apache/tika/parser/utils/** org/apache/tika/parser/xml/** org/apache/tika/parser/*.* org/apache/tika/parser/image/** org/apache/tika/parser/ocr/** org/apache/tika/parser/csv/** javax/xml/bind/**
tika_update_jar_excludes=
tika_update_jar_update=true

共 (2) 个答案

  1. # 1 楼答案

    NoClassDefFoundError的原因是您项目的两个不同jar依赖于具有不同版本的同一jar。因此,您可以使用ide在pom中排除jar

  2. # 2 楼答案

    关键在于理解错误消息:

    java.lang.NoClassDefFoundError: Could not initialize class
         com.github.junrar.Archive
    

    注意,它说它不能初始化类。类无法初始化有几个原因。这些措施包括:

    • 在初始化此类期间引发(未处理)未经检查的异常。如果发生了这种情况,那么应该有一个早期的异常和stacktrace,它告诉您引发了什么异常以及在哪里

    • 此类对另一个初始化失败的类具有静态依赖关系。对于失败的应该有一个早期异常和stacktrace

    • 可能存在依赖性问题,尽管我希望在这种情况下会出现不同的异常消息