Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr java.lang.ClassNotFoundException:net.minidev.json.writer.JsonReaderI执行DataImportHandler时_Java_Solr_Classnotfoundexception_Jsonpath_Dataimporthandler - Fatal编程技术网

Solr java.lang.ClassNotFoundException:net.minidev.json.writer.JsonReaderI执行DataImportHandler时

Solr java.lang.ClassNotFoundException:net.minidev.json.writer.JsonReaderI执行DataImportHandler时,java,solr,classnotfoundexception,jsonpath,dataimporthandler,Java,Solr,Classnotfoundexception,Jsonpath,Dataimporthandler,我目前正在为Solr 8.4.1开发一个自定义的DataImportHandler 我编写了自己的实体处理器类,其中使用了json路径库。即使solr dataimporthandler(我必须在自定义类中导入)本身似乎已经有一个json路径依赖项,我还是想安全地将所有必要的类编译到OparlEntityProccessor.jar中 但是,当我通过web界面执行dataimporter时,会出现以下错误: Exception in thread "Thread-16" java.lang.No

我目前正在为Solr 8.4.1开发一个自定义的DataImportHandler

我编写了自己的实体处理器类,其中使用了json路径库。即使solr dataimporthandler(我必须在自定义类中导入)本身似乎已经有一个json路径依赖项,我还是想安全地将所有必要的类编译到OparlEntityProccessor.jar中

但是,当我通过web界面执行dataimporter时,会出现以下错误:

Exception in thread "Thread-16" java.lang.NoClassDefFoundError: net/minidev/json/writer/JsonReaderI
            at com.jayway.jsonpath.internal.DefaultsImpl.<init>(DefaultsImpl.java:17)
            at com.jayway.jsonpath.internal.DefaultsImpl.<clinit>(DefaultsImpl.java:15)
            at com.jayway.jsonpath.Configuration.getEffectiveDefaults(Configuration.java:48)
            at com.jayway.jsonpath.Configuration.defaultConfiguration(Configuration.java:173)
            at com.jayway.jsonpath.internal.ParseContextImpl.<init>(ParseContextImpl.java:21)
            at com.jayway.jsonpath.JsonPath.parse(JsonPath.java:599)
            at com.github.fbecker97.OparlEntityProcessor.initOparlObjects(OparlEntityProcessor.java:55)
            at com.github.fbecker97.OparlEntityProcessor.init(OparlEntityProcessor.java:33)
            at org.apache.solr.handler.dataimport.EntityProcessorWrapper.init(EntityProcessorWrapper.java:77)
            at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:434)
            at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:415)
            at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:330)
            at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:233)
            at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:424)
            at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:483)
            at org.apache.solr.handler.dataimport.DataImporter.lambda$runAsync$0(DataImporter.java:466)
            at java.base/java.lang.Thread.run(Thread.java:830)
    Caused by: java.lang.ClassNotFoundException: net.minidev.json.writer.JsonReaderI
            at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:436)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
            at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:555)
            at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
            ... 17 more
我对gradle了解不多,但他们似乎从依赖项中排除了我需要的关键类。 再说一次,我不确定这有什么关系,因为我显式地将所有需要的类编译到我的jar中

有人熟悉这种问题吗

编辑:

现在我编写了另一个用于测试的小Processor类,并包含了另一个名为ejml的外部库中的一些内容。Solr本身对这个库没有任何依赖关系,所以就像我之前将所有必要的类编译到jar中一样

这一次solr能够完美地执行处理器


这让我觉得json路径依赖和上述对json智能的排除确实存在一些奇怪的东西。

解决了它

我从…\solr-8.4.1\server\solr-webapp\webapp\WEB-INF\lib中删除了json-path-2.4.0.jar。这样,solr除了在我的jar中搜索丢失的类之外,别无选择。。我想是吧? 我仍然不知道那里发生了什么,但它非常有效

  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">custom-import-config.xml</str>
    </lst>
  </requestHandler>
<dataConfig>
    <dataSource type="URLDataSource"
            connectionTimeout="3000"
            readTimeout="5000"
            baseUrl="..."/>

    <document>
        <entity name="oparl"
            processor="com.github.fbecker97.OparlEntityProcessor"
            transformer="LogTransformer"
            logTemplate="TEST: ${oparl.id}" logLevel="error" >


        </entity>
    </document>
</dataConfig>
implementation('com.jayway.jsonpath:json-path', {
    exclude group: "net.minidev", module: "json-smart"