Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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
Java Solr无法加载MySQL JDBC驱动程序_Java_Mysql_Apache_Jdbc_Solr - Fatal编程技术网

Java Solr无法加载MySQL JDBC驱动程序

Java Solr无法加载MySQL JDBC驱动程序,java,mysql,apache,jdbc,solr,Java,Mysql,Apache,Jdbc,Solr,我正在Mac上使用solr4.6.1。我试图弄清楚如何使用数据导入从MySQL加载数据。但我最终无法加载JDBC驱动程序类。以下是我所做的: 将mysql-connector-java-5.1.29-bin.jar放入~/Tools/Solr/example/lib/ 1.配置~/Tools/Solr/example/Solr/collection1/conf/data config.xml: <dataConfig> <dataSource type="JdbcDataSou

我正在
Mac
上使用
solr4.6.1
。我试图弄清楚如何使用数据导入从
MySQL
加载数据。但我最终无法加载JDBC驱动程序类。以下是我所做的:

将mysql-connector-java-5.1.29-bin.jar放入
~/Tools/Solr/example/lib/

1.配置
~/Tools/Solr/example/Solr/collection1/conf/data config.xml

<dataConfig>
<dataSource type="JdbcDataSource" 
          driver="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/test" 
          user="root" 
          password="root"/>
<document>
<entity name="SolrTest" 
        query="select * from SolrTest">
   <field column="ID" name="id"/>
   <field column="Name" name="name"/>
   <field column="Class" name="class"/>
   <field column="Score" name="score"/>
</entity>
</document>
</dataConfig>
<field name="id" type="int" indexed="true" stored="true" required="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="class" type="string" indexed="true" stored="true" />
<field name="score" type="int" indexed="true" stored="true"/>

然后跑

java -jar start.jar
当我去

http://localhost:8983/solr/#/collection1/dataimport//dataimport 
它表明

No information available (idle)
单击“执行”按钮时,我收到以下错误消息:

31537[Thread-15]错误org.apache.solr.handler.dataimport.DataImporter–完全导入 失败:java.lang.RuntimeException:java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException:可能 未加载驱动程序:com.mysql.jdbc.driver Processing Document#1 at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:270) 在 org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:411) 在 org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:476) 在 org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:457) 原因:java.lang.RuntimeException: org.apache.solr.handler.dataimport.DataImportHandlerException:可能 未加载驱动程序:com.mysql.jdbc.driver Processing Document#1 at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:410) 在 org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:323) 在 org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:231) ... 又有3宗由以下原因引致: org.apache.solr.handler.dataimport.DataImportHandlerException:可能 未加载驱动程序:com.mysql.jdbc.driver Processing Document#1 at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(dataimporthandlexception.java:71) 在 org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:116) 在 org.apache.solr.handler.dataimport.JdbcDataSource.init(JdbcDataSource.java:64) 在 org.apache.solr.handler.dataimport.DataImporter.getDataSourceInstance(DataImporter.java:383) 在 org.apache.solr.handler.dataimport.ContextImpl.getDataSource(ContextImpl.java:99) 在 org.apache.solr.handler.dataimport.SqlEntityProcessor.init(SqlEntityProcessor.java:53) 在 org.apache.solr.handler.dataimport.EntityProcessorWrapper.init(EntityProcessorWrapper.java:74) 在 org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:427) 在 org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:408) ... 5其他原因:java.lang.ClassNotFoundException:无法 加载com.mysql.jdbc.Driver或 org.apache.solr.handler.dataimport.com.mysql.jdbc.Driver位于 org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:916) 在 org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:114) ... 12其他原因:org.apache.solr.common.SolrException:错误 正在加载类“com.mysql.jdbc.Driver” org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:470) 在 org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:401) 在 org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:906) ... 13更多原因:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver位于 java.net.URLClassLoader$1.run(URLClassLoader.java:366)位于 java.net.URLClassLoader$1.run(URLClassLoader.java:355)在 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:354)位于 loadClass(ClassLoader.java:423)位于 java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)位于 loadClass(ClassLoader.java:356)位于 java.lang.Class.forName0(本机方法)位于 java.lang.Class.forName(Class.java:264)位于 org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:454) ... 还有15个

如何解决这个问题

  • 在solr安装目录中创建一个文件夹。(说solr-4.6.1/lib

  • 将mysql-connector-java-5.1.29-bin.jar放在文件夹中

  • 编辑solrconfig.xml并放置jar的路径

  • 重新启动Solr

  • 也请检查你的网址。它有
    /

    http://localhost:8983/solr/#/collection1/dataimport//dataimport 
    

    所以对于那些不幸的灵魂,他们最终来到这里。我使用的是最新的Solr Docker映像(8.4),它的配置使Solr Unix用户没有任何创建/删除文件夹等的权限。出于某种原因,我设法创建了一个
    lib
    文件,并将其视为目录。调试一段时间后,我注意到了这个错误,并立即更改了

    其中,我的
    postgresql-42.2.10.jar
    驱动程序是。否则,所有其他步骤都将应用(编辑
    solrconfig.xml
    ,添加
    data config.xml
    ,添加
    schema.xml
    ,将
    posgresql-*.jar
    复制到容器的
    /opt/solr-8.4.1/contrib/dataimporthandler
    )。也许值得一提的是,我使用了Docker的内部网络URL而不是localhost:
    URL=“jdbc:postgresql://host.docker.internal:5600/my_postgres_db“
    但我认为这无关紧要


    哦,记得在添加文件后重新启动Solr/进行更改=)。

    直接在Solr文件夹下创建一个lib文件夹,并将jar文件放在下面,如-~/Tools/Solr/lib/mysqlxxx.jar谢谢。它起作用了。但我还有一个问题。当我点击Dataimport页面下的Execute按钮时。它不断索引,永不停止。实际上,数据已经导入。我必须单击放弃,然后显示索引已完成。为什么我会有这个问题?很重要
    No information available (idle)
    
    http://localhost:8983/solr/#/collection1/dataimport//dataimport