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

如何生成JQAssistant扫描创建的Neo4j数据库转储?SSL问题求解

解决JQAssistant生成Neo4j数据库转储的问题

针对你遇到的两种困境(集成服务器无Shell、本地Neo4j连接SSL握手失败),结合你使用的版本(Neo4j 3.5.15 + JQAssistant 1.9),我整理了几个可行的解决方案:

方案1:修复本地Neo4j连接的SSL握手错误

你遇到的javax.net.ssl.SSLHandshakeException是因为JQAssistant的Neo4j客户端(3.5.14)和本地Neo4j服务器(3.5.15)的SSL配置不匹配,有两种修复方式:

方式A:临时关闭Neo4j的SSL(仅测试环境使用)

  • 打开Neo4j安装目录下的conf/neo4j.conf文件
  • 找到并修改配置项:
    dbms.ssl.enabled=false
    
  • 重启Neo4j服务器
  • 重新执行扫描命令(无需SSL,直接用bolt://协议):
    jqassistant.sh scan -f my-project.jar -storeUri bolt://localhost:7687 -storeUsername neo4j -storePassword secret
    
  • 扫描完成后,用Neo4j自带工具生成转储:
    neo4j-admin dump --database=graph.db --to=./my-jqassistant-dump.dump
    

    注意:JQAssistant默认使用的数据库名是graph.db,需对应指定

方式B:配置JQAssistant信任Neo4j的SSL证书(生产环境推荐)

  • 确认Neo4j的SSL端口(3.5版本默认SSL Bolt端口是7688)
  • 找到Neo4j生成的信任证书,通常在certificates/neo4j.truststore路径下
  • 执行扫描命令时,添加JVM参数指定信任存储:
    jqassistant.sh \
      -Djavax.net.ssl.trustStore=/path/to/neo4j/certificates/neo4j.truststore \
      -Djavax.net.ssl.trustStorePassword=your-truststore-password \
      scan -f my-project.jar \
      -storeUri bolt+s://localhost:7688 \
      -storeUsername neo4j \
      -storePassword secret
    

    提示:Neo4j默认信任存储密码是neo4j,首次启动会要求修改

方案2:直接用JQAssistant本地存储生成转储(无需连接外部Neo4j)

这个方案绕开外部Neo4j连接问题,直接让JQAssistant把扫描结果存储到本地文件,再用Neo4j工具转储:

  • 执行扫描命令,指定本地存储目录(替代-storeUri):
    jqassistant.sh scan -f my-project.jar -storeDirectory ./jqassistant-local-db
    
    执行完成后,./jqassistant-local-db目录下会生成完整的Neo4j数据库文件
  • 使用JQAssistant内置的Neo4j工具(版本3.5.14,避免版本兼容问题)生成转储:
    找到JQAssistant安装目录下的neo4j/bin/neo4j-admin,执行:
    ./neo4j-admin dump --database=graph.db --to=./my-jqassistant-dump.dump --dir=../data/databases
    

    注意:--dir参数要指向JQAssistant本地存储目录下的databases子目录(即./jqassistant-local-db/databases)

方案3:针对无Shell的集成服务器场景

如果你的集成服务器无法访问Shell,可以通过JQAssistant的Java API实现扫描+转储的自动化:

  • 在项目中引入JQAssistant核心依赖(Maven示例):
    <dependency>
        <groupId>com.buschmais.jqassistant.core</groupId>
        <artifactId>store-neo4j3</artifactId>
        <version>1.9.0</version>
    </dependency>
    
  • 编写代码执行扫描并生成转储:
    import com.buschmais.jqassistant.core.store.impl.neo4j3.Neo4j3Store;
    import org.neo4j.backup.BackupService;
    import org.neo4j.backup.BackupServiceFactory;
    
    import java.io.File;
    
    public class JQAssistantDumpGenerator {
        public static void main(String[] args) throws Exception {
            // 创建本地存储
            File storeDir = new File("./jqassistant-integrated-db");
            try (Neo4j3Store store = new Neo4j3Store(storeDir)) {
                store.connect();
                // 执行扫描(以扫描JAR为例,可按需调整)
                store.scan(new File("my-project.jar"), null);
                // 生成数据库转储
                BackupService backupService = BackupServiceFactory.backupService();
                backupService.backup(new File("./integrated-jqassistant-dump.dump"), store.getGraphDatabaseService());
            }
        }
    }
    
  • 将这段代码打包成可执行JAR,在集成服务器上运行即可生成转储文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:37:42