#1 Le 24/10/2008, à 16:29
- bobsinglar
bash: ./arq-extra.jar: Permission non accordée
Bonjour,
J'essaye d'exécuter un programme java (utilitaire en ligne de commande qui génère des dictionnaires de propriétés RDF...) fourni avec la librairie HP Jena.
Ligne de lancement :
java -cp ./*.jar jena.schemagen -i http://xmlns.com/foaf/0.1/ --ontology
La réponse est :
Exception in thread "main" java.lang.NoClassDefFoundError: //arq-extra/jar
A priori, le répertoire courant contient tous les .jar requis. Y compris la lib arq-extra.jar contenant la classe qui fait défaut. Mais pour être sûr, je le précise dans le classpath :
java -cp ./*.jar;./arq-extra.jar jena.schemagen -i http://xmlns.com/foaf/0.1/ --ontology
La réponse est alors :
Exception in thread "main" java.lang.NoClassDefFoundError: //arq-extra/jar
bash: ./arq-extra.jar: Permission non accordée
Pourtant tous les .jar sont lisibles/éditables par l'utilisateur courant. Et si j'exécute les mêmes lignes avec un sudo, le résultat est le même. Très étonnant.
Je remarque qu'il s'agit bien d'une erreur bash, et non Java (enfin, l'erreur bash entrainant l'impossibilité pour java de trouver la classe).
J'ai aussi tenté de décompresser/recompresser le jar. Rien.
Qu'en pensez-vous ?
Merci
bob
#2 Le 24/10/2008, à 16:34
- bobsinglar
Re : bash: ./arq-extra.jar: Permission non accordée
Si je rend arq-extra.jar exécutable, le massage devient :
Exception in thread "main" java.lang.NoClassDefFoundError: //arq-extra/jar
Failed to load Main-Class manifest attribute from
/home/pcauquil/.java_libraries/jena/arq-extra.jar
Par ailleurs, quelle est cette syntaxe "//arq-extra/har" ? Bizarre pour une classe !
May die
#3 Le 24/10/2008, à 16:43
- bobsinglar
Re : bash: ./arq-extra.jar: Permission non accordée
J'ai mélangé plusieurs choses :
Ce n'est pas un problème bash, mais bien Java.
Il faut s'en tenir à
java -cp ./*.jar jena.schemagen -i http://xmlns.com/foaf/0.1/ --ontology
et
Exception in thread "main" java.lang.NoClassDefFoundError: //arq-extra/jar
Ca reste un mystère.
#4 Le 29/10/2008, à 12:03
- bobsinglar
Re : bash: ./arq-extra.jar: Permission non accordée
J'ai trouvé une demi-réponse :
Si je déclare le Classpath dans le .bashrc avec la liste de tous les jar nécessaires, la commande suivante fonctionne bien :
java jena.schemagen -i http://xmlns.com/foaf/0.1/ --ontology
Sans préciser le classpath dans la commande donc.
Par contre, si le Classpath n'est pas défini au niveau du système et que je le déclare à la volée avec l'option "-cp", comme ceci :
java -cp /dossier_des_jar/*.jar jena.schemagen -i http://xmlns.com/foaf/0.1/ --ontology
L'une des classes (contenue dans ce répertoire) n'est pas trouvée. Les autres sont trouvées !
Je ne comprends absolument pas quelle est la différence entre le fichier jar incriminé et les autres