我正在使用嵌入式Neo4j,版本3.0.3 。 Following this guide,我创建了Neo4j / Java代码。它创建了一个数据库,添加了两个节点(一个用于java,一个用于scala)并添加了一个关系。
package examples;
import java.io.File;
import org.neo4j.graphdb.*;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
public class HelloWorld {
public static void main(String[] args) {
GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
GraphDatabaseService db = dbFactory.newEmbeddedDatabase(new File("Test_DB"));
try (Transaction tx = db.beginTx()) {
Node javaNode = db.createNode(Tutorials.JAVA);
javaNode.setProperty("TutorialID", "JAVA001");
Node scalaNode = db.createNode(Tutorials.SCALA);
scalaNode.setProperty("TutorialID", "SCALA001");
Relationship relationship = javaNode.createRelationshipTo(scalaNode, TutorialRelationships.JVM_LANGUAGES);
relationship.setProperty("Id", "1234");
tx.success();
}
}
}
enum Tutorials implements Label {
JAVA, SCALA, SQL, NEO4J;
}
enum TutorialRelationships implements RelationshipType {
JVM_LANGUAGES, NON_JVM_LANGUAGES;
}
我使用Eclipse进行编程,因此导入了所有库,我只需单击Eclipse上的“运行”按钮即可运行代码,它似乎没有任何问题。运行代码后,我现在在Test_DB
目录中有一个文件夹~/workspace/project_name/Test_DB
,其中project_name
是整个Eclipse文件夹的名称。 我的目标是在网络浏览器中可视化此数据库。我之前链接的指南显示了此示例;用户可以查看Web浏览器中的节点(请参阅网页底部)。不幸的是,我使用的是Linux计算机和Firefox,而且该教程是在Windows中,我无法弄清楚如何获得可视化。
还有一些与此相关的问题。不幸的是,其中一些(such as this one)建议使用软件其他而不是默认的可视化。我不拥有计算机,我必须通过环形交叉过程才能安装外部代码。要清楚我的意思,this link discusses the default Neo4j browser。这就是我想看到的。
This question here directly tackles the same issue,事实上,它使用了我使用的完全相同的教程!答案建议更改neo4j-server.properties
文件中的路径。不幸的是,该文件不存在,经过进一步分析,似乎Neo4j 3.0改变了配置命名,我通过阅读the answer to this similar question找到了它。现在有一个包含此信息的文件conf/neo4j.conf
。我在前几行输入了以下信息,其他设置保持默认值:
# The name of the database to mount
dbms.active_database=Test_DB
# Paths of directories in the installation.
dbms.directories.data=/home/username/workspace/project_name/
这似乎不起作用。我正确使用这些设置吗?当我在运行./bin/neo4j start
并打开左侧的数据库符号后打开neo4j Web浏览器时,我看到“Name:Test_DB”,但它也说数据库中没有节点和关系,并且返回匹配所有查询都不提供任何内容浏览器是否可以连接到我的数据库,以便它可以看到节点(例如,上面我的Java代码中的两个节点)?
或者是我没有正确使用此代码;代码是否必须以某种方式避免退出(即用其他东西替换tx.success()
?)以保存数据?
答案 0 :(得分:0)
很抱歉回答我自己的问题,但我终于想出了如何做到这一点!这是发生的事情:according to the github change log for 3.0.0.RC-1:
数据库现在存储在dbms.directories.data中指定的目录下名为databases的目录中
所以我们实际要做的就是确保我们的数据库位于以下位置:
/home/username/workspace/project_name/databases/
问题在于,当我们在Eclipse中运行它时,我们将数据库放在以下文件夹中:
/home/username/workspace/project_name/
因此,解决方案是确保新数据库文件夹前面有databases
名称,即我将一行更改为:
GraphDatabaseService db = dbFactory.newEmbeddedDatabase(new File("databases/Test_DB"));