You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Java连接Docker部署的Memgraph?程序运行失败求助

解决Memgraph与Java Neo4j驱动连接失败的问题

常见问题排查与修复步骤:

  • 确认Docker端口映射:启动Memgraph容器时必须映射7687端口到主机,执行以下命令启动容器:

    docker run -p 7687:7687 memgraph/memgraph
    

    若未映射,主机无法访问容器内的Bolt服务。

  • 检查Bolt协议状态:Memgraph默认启用Bolt协议,可通过容器日志确认服务启动:

    docker logs <你的Memgraph容器ID>
    

    日志中应包含Bolt server is listening on 0.0.0.0:7687字样。

  • 依赖版本兼容性:Memgraph兼容Neo4j 4.x系列的Java驱动,确保项目依赖正确:
    Maven配置(pom.xml):

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

    Gradle配置(build.gradle):

    implementation 'org.neo4j.driver:neo4j-java-driver:4.4.11'
    
  • 认证方式优化:Memgraph默认无需用户名密码,使用AuthTokens.none()替代空字符串认证,代码更清晰且避免潜在问题。

修正后的可运行代码:

import org.neo4j.driver.*;
import static org.neo4j.driver.Values.parameters;

public class MemgraphHelloWorld implements AutoCloseable {
    private final Driver driver;

    public MemgraphHelloWorld(String uri) {
        // 使用无认证方式连接Memgraph
        driver = GraphDatabase.driver(uri, AuthTokens.none());
    }

    @Override
    public void close() throws Exception {
        driver.close();
    }

    public void createGreeting(String message) {
        try (Session session = driver.session()) {
            String result = session.writeTransaction(tx -> {
                Result res = tx.run(
                    "CREATE (a:Greeting) SET a.message = $message RETURN 'Node ' + id(a) + ': ' + a.message",
                    parameters("message", message)
                );
                return res.single().get(0).asString();
            });
            System.out.println(result);
        } catch (Exception e) {
            // 打印异常信息,方便排查问题
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws Exception {
        try (MemgraphHelloWorld app = new MemgraphHelloWorld("bolt://localhost:7687")) {
            app.createGreeting("Hello, Memgraph!");
        }
    }
}

额外排查技巧:

  • 测试端口连通性:执行nc -zv localhost 7687(Linux/macOS)或使用PowerShell的Test-NetConnection localhost -Port 7687,确认端口可访问。
  • 若仍失败,检查Memgraph配置文件memgraph.conf,确保bolt-enabled=true且未修改默认端口。

内容的提问来源于stack exchange,提问作者KWriter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:25:16