gpt4 book ai didi

java - Neo4j、REST API、java - 密码查询

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:04 25 4
gpt4 key购买 nike

我使用 Java 学习 REST API 并尝试运行这个简单的代码,但出现错误。这部分代码有问题:RestAPI graphDb = new RestAPI...我使用这个外部 JAR ( http://m2.neo4j.org/content/repositories/releases/org/neo4j/neo4j-rest-graphdb/2.0.0/neo4j-rest-graphdb-2.0.0.jar )

import java.util.Collections;
import java.util.Iterator;
import java.util.Map;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.rest.graphdb.RestAPI;
import org.neo4j.rest.graphdb.RestAPIFacade;
import org.neo4j.rest.graphdb.RestGraphDatabase;
import org.neo4j.rest.graphdb.query.QueryEngine;
import org.neo4j.rest.graphdb.query.RestCypherQueryEngine;
import org.neo4j.rest.graphdb.util.QueryResult;

public class CypherQuery {

public static void main(String[] args) {

RestAPI graphDb = new RestAPIFacade("http://localhost:7474/db/data/");

QueryEngine engine=new RestCypherQueryEngine(graphDb);
QueryResult<Map<String,Object>> result = engine.query("start n=node(*) return count(n) as total", Collections.EMPTY_MAP);

Iterator<Map<String, Object>> iterator=result.iterator();
if(iterator.hasNext()) {
Map<String,Object> row= iterator.next();
System.out.println("Total nodes: " + row.get("total"));

}
}
}

错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/ws/rs/core/Response$StatusType
at org.neo4j.rest.graphdb.RestAPIFacade.<init>(RestAPIFacade.java:295)
at cz.mendelu.bp.CypherQuery.main(CypherQuery.java:19)
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.core.Response$StatusType
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more

最佳答案

就像 @chrylis 指出的那样,您的错误似乎是您没有所需的 jar 并因此出现错误的问题。现在从您的评论中,我发现您在理解 Maven 和依赖项方面遇到困难。这是我为您制作的简单指南。

[Understand that this is NOT a one stop guide and this program might not run out of the box. Its running for me at the moment but it depends on many things including what version of neo4j you are running and several other configuration factors. Nonetheless, this should be sufficient to get you started. ]

您需要在系统上安装 Maven。关于 Maven 的教程很少。有一个在这里。 https://www.youtube.com/watch?v=al7bRZzz4oU&list=PL92E89440B7BFD0F6

但像我一样,如果您想要更快的方法,新的 Eclipse Luna 附带了安装的 Maven。因此,如果您愿意,请下载新的 eclipse luna。即使使用较旧的 Eclipse 版本,您也可以前往市场并安装 Eclipse 的 Maven。

完成后,创建一个 Maven 快速启动项目,并将您的 pom.xml 文件替换为以下文件。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>rash.experiments</groupId>
<artifactId>neo4j</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>neo4j</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<repositories>
<repository>
<id>neo4j-release-repository</id>
<name>Neo4j Maven 2 release repository</name>
<url>http://m2.neo4j.org/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-rest-graphdb</artifactId>
<version>2.0.1</version>
</dependency>
</dependencies>
</project>

我假设您已经安装了 neo4j。我不会详细介绍主要细节,但是在 neo4j 目录的conf下的neo4j-server.properties文件中,您需要取消注释该行

org.neo4j.server.webserver.address = 0.0.0.0

这基本上可以让您从另一台机器上运行的 java 代码访问此服务器。进行此更改后,请确保重新启动服务器并且其他计算机可以访问它。要进行测试,您可以运行 http://ip.address.of.this.machine:7474 Neo4j 附带的门户网站应该会打开。

Note: I assume that you have some data in your database. This is required otherwise the program will fail. If you need some sample data, go to http://ip_address_of_your_neo4j_web_server:7474/ and load the movie graph database that comes with the installation.

现在让我们编码。在您上面创建的项目中创建此类。

package rash.experiments.neo4j;

import java.util.Collections;
import java.util.Iterator;
import java.util.Map;

import org.neo4j.rest.graphdb.RestAPI;
import org.neo4j.rest.graphdb.RestAPIFacade;
import org.neo4j.rest.graphdb.query.QueryEngine;
import org.neo4j.rest.graphdb.query.RestCypherQueryEngine;
import org.neo4j.rest.graphdb.util.QueryResult;

public class Neo4JRestTest
{
public static void main(String args[])
{
RestAPI graphDb = new RestAPIFacade("http://192.168.1.8:7474/db/data/");
QueryEngine engine = new RestCypherQueryEngine(graphDb);
QueryResult<Map<String, Object>> result = engine.query("start n=node(*) return count(n) as total", Collections.EMPTY_MAP);
Iterator<Map<String, Object>> iterator = result.iterator();
if (iterator.hasNext())
{
Map<String, Object> row = iterator.next();
System.out.print("Total nodes: " + row.get("total"));
}
}
}

现在要运行,您需要先构建项目,因为在运行之前,maven 不会下载您在 pom.xml 中指定的任何 jar。因此,如果您安装了maven,请转到pom.xml所在的目录,然后在命令行中写入mvn clean package。此命令将运行并安装所有依赖项,然后运行您的程序。由于没有要运行的测试用例,因此它将成功。但我们的目标不是运行任何测试用例。就是下载所有的jar包。现在您已拥有一切,您可以运行 java 代码,您将看到最终结果。

如果您使用的是 eclispe 中的 Maven,则右键单击您的项目,然后执行 run as -> maven build。第一次会出现一个对话框。只需在其中写入 package 并按 Enter 键即可。它将执行与上面相同的操作并带来所有 jar 。然后像上面一样执行程序。

如果您收到“无端点”或“读取 JSON 时出错”等错误,请了解 REST API 无法读取您的图表。

检查 neo4j-server.properties 中的属性。它应该是您在网址中提到的任何内容。

org.neo4j.server.webadmin.data.uri = /db/data/

关于java - Neo4j、REST API、java - 密码查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21954850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com