2012-07-20 60 views
2

我有一個新建立的neo4j-rest-graphdb-1.8-SNAPSHOT.jar。但是,我出了問題。Neo4j爪哇休息綁定:NoClassDefFoundError

我有基本的/默認安裝的Neo4j的運行,使用有效的圖形存儲配置:

Neo4j的版本

圖形數據庫內核1.8.M05

OS

Ubuntu 12.04 LTS

Java版本

「1.6.0_24」 OpenJDK的運行時環境(1.11.1 IcedTea6)(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 

回答

2

好拉下它的DEPS,我認爲它最後全部膠凝我:

從頂部:

  1. 從Maven 2升級到Maven 3
  2. 刪除了〜/ .m2/repository以刪除之前下載的任何依賴項
  3. 然後,在java-rest-binding git倉庫中,我運行mvn dependency:copy-dependencies以獲取所有依賴項的副本,然後將它們(目標/依賴項文件夾的內容)添加到我的構建路徑中(感謝Peter)
  4. 在Eclipse中這個從源文件(複製/ main/java/org/neo4j到我的項目的'org'文件夾)的其餘包給了我一個缺少'批量請求'類型包neo4j
  5. 所以,然後我運行mvn package另一個新鮮/克隆/檢出的java-rest-binding git回購並複製結果。罐子(neo4j-rest-graphdb-1.8-SNAPSHOT.jar)到我的項目的lib(連同所有的依賴

我已經做了一些初步的測試,這似乎是現在的工作!

如果上述步驟顯示了我使用Maven天真,你知道簡明指南避免今後此類問題的,請與大家共享!

謝謝!

+0

從Neo4j Group(來自Peter)引用:這很有用,但你很幸運。將所有jar打包成一個jar文件可能會覆蓋不同內容下不同內容下存在的文件,如java服務加載器文件。您沒有這些,但請注意是否包含e。 G。註冊更多緩存類型的內核和企業罐。 – Rob 2012-07-26 15:14:20

2

這看起來像一個丟失的依賴。您是否確定通過maven包含所有依賴關係,如https://github.com/neo4j/java-rest-binding/blob/master/pom.xml中所述?你可以從源代碼編譯該項目,並通過做

mvn dependency:copy-dependencies 

/彼得

+0

感謝Peter,我試過了,但它沒有工作(同樣的錯誤)。它的構建,然後我將jar文件複製到我的項目的lib文件夾。構建路徑中的其他jar包括:geronimo-jta_1.1_spec-1.1.1.jar,json-simple-1.1.1.jar,lucene-core-3.5.0.jar,mysql-connector-java-5.0.8- bin.jar,neo4j-cypher-1.8.M05.jar,neo4j-graph-algo-1.8.M05.jar,neo4j-graph-matching-1.8.M05.jar,neo4j-jmx-1.8.M05.jar,neo4j- kernel-1.8.M05.jar,neo4j-lucene-index-1.8.M05.jar,neo4j-shell-1.8.M05.jar,neo4j-udc-1.8.M05.jar,org.apache.servicemix.bundles.jline- 0.9.94_1.jar,scala-library-2.9.1-1.jar,server-api-1.8.M05.jar – Rob 2012-07-23 16:18:38

1

我有同樣的問題,發現我沒有球衣。我試着去所有的依賴關係,但沒」不要拿這個罐子,所以解決方案可以..只是下來加載運動衫捆綁1.13-b01.jar。

P.S. :這可能不是解決問題的最好方法,因爲可能存在很多依賴關係,但在這種特殊情況下,它只是缺少運動衫,所以它可以這樣工作:-)