使用 jdbc 连接到 Neo4j 找不到适合 jdbc:neo4j:bolt://localhost:7687 的驱动程序

Posted

技术标签:

【中文标题】使用 jdbc 连接到 Neo4j 找不到适合 jdbc:neo4j:bolt://localhost:7687 的驱动程序【英文标题】:Connection to Neo4j with jdbc No suitable driver found for jdbc:neo4j:bolt://localhost:7687 【发布时间】:2021-11-22 11:16:51 【问题描述】:

我正在尝试使用 Talend 连接到 Neo4j,但我在主题行中收到错误“没有为 jdbc:neo4j:bolt://localhost:7687 找到合适的驱动程序”。当我尝试连接我编写的控制台 Java 应用程序时,我也得到了它。代码如下。

我正在使用从https://jar-download.com/artifact-search/neo4j-jdbc 获得的 jar 文件 这是从中获取 jar 文件的最可靠的地方,还是那里有更好的 jar 文件。

控制台应用程序上的 java 代码编译没有错误,因此 jar 文件没有损坏。

/**
* Sample connection to Neo4j using jdbc
* compiled with command javac -cp "neo4j-jdbc-4.0.4.jar" ConnectToNeo4j.java
* executed with command java ConnectToNeo4j
* output 

java.sql.SQLException: No suitable driver found for jdbc:neo4j:bolt://localhost:7687
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:706)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
        at ConnectToNeo4j.main(ConnectToNeo4j.java:25)


**/

    import java.net.URI;
    import java.sql.*;
    
    import org.neo4j.jdbc.*;
    import org.neo4j.jdbc.Neo4jDriver;
    
    class ConnectToNeo4j 
      public static void main(String[] args) 
        String query = "MATCH (n:User) RETURN n.name LIMIT 25";
        try 
    // My passsword isn't passsword !
          Connection con = DriverManager.getConnection("jdbc:neo4j:bolt://localhost:7687", "neo4j", "password");
          try (PreparedStatement stmt = con.prepareStatement(query)) 
            try (ResultSet rs = stmt.executeQuery()) 
              while (rs.next()) 
                System.out.println("Found: "+rs.getString("u.name"));
              
             catch (Exception e)  e.printStackTrace(); 
           catch (Exception e)  e.printStackTrace(); 
          con.close();
         catch (Exception e)  e.printStackTrace(); 
      
    

【问题讨论】:

【参考方案1】:

根据官方文档,

对于同时支持 Bolt 和 HTTP 的一体化模块,您可以 只需使用:

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-jdbc-driver</artifactId>
    <version>neo4j-jdbc-version</version>
</dependency>

如果不使用 Maven,则为 Jar: https://repo1.maven.org/maven2/org/neo4j/neo4j-jdbc-driver/4.0.4/neo4j-jdbc-driver-4.0.4.jar

如果你只想要其中一种协议,你可以依赖它的模块:

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-jdbc-bolt</artifactId>
    <version>neo4j-jdbc-version</version>
</dependency>

or

<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-jdbc-http</artifactId>
    <version>neo4j-jdbc-version</version>
</dependency>

https://neo4j-contrib.github.io/neo4j-jdbc/

【讨论】:

文档假设您使用的是 Maven。我不是,所以我不确定它是否适用于控制台应用程序。我认为我不需要为控制台应用程序添加属性,而且我不知道它们会去哪里。 我在答案中给了你一个指向 jar 文件(neo4j-jdbc-driver)的链接,你需要这个才能删除那个异常。@WhoIsKieran 下载 jar 文件 repo1.maven.org/maven2/org/neo4j/neo4j-jdbc-driver/4.0.4/… 并将其放入 Talend 工作。谢谢。

以上是关于使用 jdbc 连接到 Neo4j 找不到适合 jdbc:neo4j:bolt://localhost:7687 的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

Maven:找不到适合 jdbc::mysql://google 的驱动程序

找不到适合 jdbc mysql 的驱动程序?

如何修复:找不到适合 jdbc:sqlserver 的驱动程序 [重复]

找不到适合 jdbc:sqlite 的驱动程序

在 Tomcat 中找不到适合 jdbc 错误的驱动程序

使用 JDBC 连接到 Athena 时找不到合适的驱动程序