Neo4j Java Rest Binding:NoClassDefFoundError

时间:2012-07-20 19:31:19

标签: java rest graph neo4j

我有一个新的neo4j-rest-graphdb-1.8-SNAPSHOT.jar。但是我很难走出大门。

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

Neo4j版本

图形数据库内核1.8.M05

OS

Ubuntu 12.04 LTS

Java版

“1.6.0_24” OpenJDK运行时环境(IcedTea6 1.11.1)(6b24-1.11.1-4ubuntu3) OpenJDK 64位服务器VM(内置20.0-b12,混合模式)

卷曲请求表明一切正常:

$ 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

3 个答案:

答案 0 :(得分:2)

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

来下载deps
mvn dependency:copy-dependencies

/彼得

答案 1 :(得分:2)

好的,我认为它最终都为我凝胶了:

从顶部开始:

  1. 从Maven 2升级到Maven 3
  2. 删除了〜/ .m2 / repository以删除任何以前下载的依赖项
  3. 然后,在java-rest-binding git repo中,我运行mvn dependency:copy-dependencies以获取所有依赖项的副本,然后将它们(目标/依赖项文件夹的内容)添加到我的构建路径(感谢Peter)
  4. 在Eclipse中使用来自源代码的这个rest包(将/ / / / / / / / neo4j复制到我项目的'org'文件夹)给了我一个缺少'批量请求'类型的neo4j包的问题
  5. 所以,然后我运行mvn package为另一个新的/克隆/签出的java-rest-binding git repo并将结果.jar(neo4j-rest-graphdb-1.8-SNAPSHOT.jar)复制到我的项目的lib中(以及所有依赖
  6. 我做了一些初步测试,这似乎现在正在运作!

    如果上述程序显示我对Maven的天真并且您知道将来避免此类问题的简明指南,请分享!

    谢谢!

答案 2 :(得分:1)

我遇到了同样的问题,发现我没有运动衫。试图得到所有的依赖,但没有得到这个罐子。所以解决方案可以..只需下载jersey-bundle-1.13-b01.jar。

P.S。 :这可能不是解决它的最好方法,因为可能有许多依赖项,但在这个特殊情况下,它只是缺少的运动衫,所以它以这种方式工作: - )