2

我有一个全新的 neo4j-rest-graphdb-1.8-SNAPSHOT.jar 版本。但是我一出门就遇到了麻烦。

我运行了 Neo4j 的基本/默认安装,并配置了有效的图形存储:

Neo4j 版本

图数据库内核 1.8.M05

操作系统

Ubuntu 12.04 LTS

爪哇版

"1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.1) (6b24-1.11.1-4ubuntu3) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

curl 请求表明一切正常:

$ curl http://localhost:7474/db/data/ -i
HTTP/1.1 200 OK
Content-Length: 809
Content-Encoding: UTF-8
Content-Type: application/json
Access-Control-Allow-Origin: *
Server: Jetty(6.1.25)

{
  "extensions" : {
    "CypherPlugin" : {
      "execute_query" :     "http://localhost:7474/db/data/ext/CypherPlugin/graphdb/execute_query"
    },
    "GremlinPlugin" : {
      "execute_script" :     "http://localhost:7474/db/data/ext/GremlinPlugin/graphdb/execute_script"
    }
  },
  "node" : "http://localhost:7474/db/data/node",
  "reference_node" : "http://localhost:7474/db/data/node/0",
  "node_index" : "http://localhost:7474/db/data/index/node",
  "relationship_index" : "http://localhost:7474/db/data/index/relationship",
  "extensions_info" : "http://localhost:7474/db/data/ext",
  "relationship_types" : "http://localhost:7474/db/data/relationship/types",
  "batch" : "http://localhost:7474/db/data/batch",
  "cypher" : "http://localhost:7474/db/data/cypher",
  "neo4j_version" : "1.8.M05-1-ge9cdca9"

但是,尝试以下行:

GraphDatabaseService graph = new RestGraphDatabase("http://localhost:7474/db/data/");

...产生一个异常:

Exception in thread "main" java.lang.NoClassDefFoundError:     javax/ws/rs/core/Response$StatusType
    at org.neo4j.rest.graphdb.RestAPIFacade.<init>(RestAPIFacade.java:265)
    at org.neo4j.rest.graphdb.RestGraphDatabase.<init>(RestGraphDatabase.java:44)
    at com.tester.api.Neo4j.importer(Neo4j.java:185)
    at com.tester.api.Neo4j.main(Neo4j.java:97)
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.core.Response$StatusType
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 4 more
4

3 回答 3

3

好吧,我想这一切都为我所用:

从一开始:

  1. 从 Maven 2 升级到 Maven 3
  2. 删除 ~/.m2/repository 以删除任何以前下载的依赖项
  3. 然后,在 java-rest-binding git repo 中,我跑来mvn dependency:copy-dependencies获取所有依赖项的副本,然后将它们(目标/依赖文件夹的内容)添加到我的构建路径中(感谢彼得)
  4. 在 Eclipse 中使用源中的这个 rest 包(将 /main/java/org/neo4j 复制到我的项目的“org”文件夹)给我带来了 neo4j 缺少“批处理请求”类型包的问题
  5. 所以,然后我跑mvn package了另一个新的/克隆的/签出的 java-rest-binding git repo 并将生成的 .jar ( neo4j-rest-graphdb-1.8-SNAPSHOT.jar) 复制到我的项目的 lib 中(以及所有依赖项

我已经做了一些初步测试,这似乎正在工作!

如果上面的过程显示了我对 Maven 的幼稚,并且您知道将来避免此类问题的简明指南,请分享!

谢谢!

于 2012-07-24T14:59:52.093 回答
2

这看起来像是缺少依赖项。您是否确保通过 maven 包含所有依赖项,如https://github.com/neo4j/java-rest-binding/blob/master/pom.xml中所述?您可以从源代码构建项目并通过以下方式为它拉下 deps

mvn dependency:copy-dependencies

/彼得

于 2012-07-21T17:12:22.117 回答
1

我有同样的问题,发现我没有球衣。试图获取所有依赖项,但没有得到这个 jar。所以解决方案可以是..只需下载 jersey-bundle-1.13-b01.jar。

PS:这可能不是解决它的最佳方法,因为可能存在许多依赖项,但在这种特殊情况下,它只是缺少球衣,所以它以这种方式工作:-)

于 2013-07-13T07:44:36.020 回答