使用VsCode编译调试Neo4j源码
文章目录
- 使用VsCode编译调试Neo4j源码
- 1 简介
- 2 步骤
- 1 下载源码
- 2 依赖
- 3 构建Neo4j
- 4 运行
- 5 安装VsCode扩展
- 6 **调试**
使用VsCode编译调试Neo4j源码
1 简介
Neo4j作为领先的图数据库,在存储、查询上都非常值得分析学习。通过调试、日志等方法跟踪代码工作流有助于理解其原理及具体实现。本文旨在帮助想要单步调试Neo4j却不知道怎么搞,或是遇到些问题的朋友。
2 步骤
1 下载源码
Neo4j源码
本文用的5.26版本
2 依赖
按照源码中的README就行,本文是基于Ubuntu
- 安装JAVA及配置环境
apt-get install openjdk-17-jdk -y
# 装完后需要配置一下环境变量
code ~/.bashrc
添加以下两行内容:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
# 保存并关闭文件后,运行以下命令使更改生效
source ~/.bashrc
# 验证安装
java -version
- 安装Maven及环境配置
注:使用ubuntu的apt安装的maven版本较低。 需要下载更新的版本:
# 下载Maven 3.8.2
wget https://downloads.apache.org/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gz
# 解压
tar -xvzf apache-maven-3.8.2-bin.tar.gz -C /opt
# 配置环境变量
code ~/.bashrc
添加以下两行:
export MAVEN_HOME=/opt/apache-maven-3.8.2
export PATH=$PATH:$MAVEN_HOME/bin
# 保存并关闭文件后,运行以下命令使更改生效
source ~/.bashrc
# 验证安装
mvn -v
3 构建Neo4j
按照README就行了。我直接执行的以下命令没有遇到任何问题,如果遇到一些问题,可以看一下README这部分的东西
mvn clean install -DskipTests -T1C
构建完成后,到packaging/standalone/target
目录下解压neo4j-community-5.26.1-SNAPSHOT-unix.tar.gz
cd packaging/standalone/target
tar -xvzf neo4j-community-5.26.1-SNAPSHOT-unix.tar.gz
4 运行
解压后,进入解压的目录就可以运行Neo4j了
cd neo4j-community-5.26.1-SNAPSHOT
# 运行Neo4j
bin/neo4j-admin server start
# 停止
bin/neo4j-admin server stop
运行后点开网页会发现:
{
"errors": [
{
"code": "Neo.ClientError.Request.Invalid",
"message": "Not Found"
}
]
}
这是由于从源码编译运行,缺少neo4j-browser-5.24.0.jar
。我的解决办法是从release的Neo4j docker里面拷贝过来。该文件是在/var/lib/neo4j/lib
目录下
5 安装VsCode扩展
在VsCode扩展应用商店中搜索并安装Extension Pack for Java
6 调试
- 修改Neo4j配置文件
配置文件都在neo4j-community-5.26.1-SNAPSHOT/conf
目录下,打开neo4j.conf
添加
server.jvm.additional=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
注:如果你是在docker里面开发,并且映射了相应端口,需要把server.default_listen_address=0.0.0.0
这一行解注释
修改完配置文件后再运行Neo4j,会有如下输出:
Directories in use:
home: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT
config: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/conf
logs: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/logs
plugins: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/plugins
import: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/import
data: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/data
certificates: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/certificates
licenses: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/licenses
run: /neo4j/packaging/standalone/target/neo4j-community-5.26.1-SNAPSHOT/run
Starting Neo4j.
Listening for transport dt_socket at address: 5005
说明Neo4j正在监听调试端口5005.
- 修改vscode调试任务配置文件
打开.vscode
目录下的launch.json
在configurations
中添加:
{
"type": "java",
"name": "Debug Neo4j",
"request": "attach",
"hostName": "localhost",
"port": 5005
}
如果没有.vscode,需要点运行和调试生成。之前安装的插件会帮你导入很多调试配置
- 开始调试
使用该配置开始调试,就可以连接进Neo4j调试了