2012-07-20 7 views
2

J'ai une nouvelle version de neo4j-rest-graphdb-1.8-SNAPSHOT.jar. Mais j'ai des problèmes dès la sortie.Neo4j Java Rest Reliure: NoClassDefFoundError

J'installation de base/défaut de Neo4j en cours d'exécution, configuré avec un magasin de graphique valide:

Neo4j Version

Graphique Database noyau 1.8.M05

OS

Ubuntu 12.04 LTS

Java Version

"1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.1) (6b24-1.11.1-4ubuntu3) OpenJDK 64 bits serveur VM (build 20,0-b12, mode mixte)

Une demande boucle suggère tout fonctionne bien:

$ 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" 

Mais, en essayant la ligne suivante:

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

... produit une exception:

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 

Répondre

2

D'accord, je pense que finalement tout gélifié pour moi:

Du haut:

  1. mis à jour de Maven 2 à 3 Maven
  2. supprimé le répertoire ~/.m2/référentiel pour supprimer toutes les dépendances téléchargés précédemment
  3. puis, dans le git contraignant java-repos, je courais mvn dependency:copy-dependencies pour obtenir des copies de toutes les dépendances et les ajoutés (le contenu du dossier cible/dépendance) à mon chemin de construction (merci Peter)
  4. utilisant ce paquet de repos de la source (copier/main/java/org/neo4j vers le dossier 'org' de mon projet) dans Eclipse m'a donné des problèmes avec un paquet 'batch request' manquant pour neo4j
  5. alors j'ai couru mvn package pour un autre dépôt git java-rest-java frais/cloné/archivé et copié le résultat.pot (neo4j-rest-graphdb-1.8-SNAPSHOT.jar) dans mon de projet lib (ainsi que toutes les dépendances

Je l'ai fait quelques tests préliminaires et cela semble fonctionner maintenant!

Si la procédure ci-dessus montre ma naïveté avec Maven et vous savez d'un guide concis pour éviter de tels problèmes à l'avenir, s'il vous plaît partager!

Merci!

+0

Citation de Neo4j Group (de Peter): Cela fonctionne, mais vous avez eu de la chance. Le regroupement de tous les fichiers jar en un seul peut écraser les fichiers qui existent avec un contenu différent sous le même emplacement dans différents fichiers jars entrants, tels que les fichiers du chargeur de service Java. Vous ne les avez pas, mais soyez conscient si vous incluez le e. g. Kernel et les jars d'entreprise qui enregistrent plus de types de cache. – Rob

2

Cela ressemble à une dépendance manquante. Avez-vous veillé à inclure toutes les dépendances via maven, comme indiqué dans https://github.com/neo4j/java-rest-binding/blob/master/pom.xml? Vous pouvez construire le projet de la source et de tirer vers le bas les DEPS pour elle en faisant

mvn dependency:copy-dependencies 

/Peter

+0

Merci Peter, j'ai essayé, mais ça n'a pas fonctionné. travail (même erreur). Il construit, puis je copie le fichier jar dans le dossier lib de mon projet. D'autres jars dans le chemin de génération sont: 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-graphe-algo-1.8.M05.jar, neo4j-graphe-correspondant-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

1

J'ai eu le même problème et a trouvé que je n'ai pas eu le maillot. essayé d'obtenir toutes les dépendances, mais n » t obtenir ce pot, donc la solution peut être .. Juste en bas load jersey-bundle-1.13-b01.jar.

P.S. : Ce n'est peut-être pas la meilleure façon de le résoudre car il pourrait y avoir beaucoup de dépendances mais dans ce scénario particulier c'est seulement le maillot qui manque de manière :-)