Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/01/2007, à 01:29

JohnnyWalker

Problème d'exécution Java sous Ubuntu

Bonjour,
Vola mon problème. Je suis pas un developpeur mais à mon boulot j'avais la tâche de developper une application en Java. Comme tout débutant j'ai commencé à faire ca sous Eclipse sous Windows.  Quand j'exécute mon appli (Run) tout marche nikel. Sauf que je viens d'apprendre qu je dois installer cette appli sur un serveur linux.  Donc après une tite recherche sur le net, j'exporte mon projet en .jar je copie les libs et je balance tout sous linux. Et la j'ai deux gros problèmes :

1-
Rien ne marche! J'essaye "java -cp ./libs/*.jar Application Argument" et bam j'ai cette erreur

Exception in thread "main" java.lang.NoClassDefFoundError: ./libs/saxon8-dom.jar
   at gnu.java.lang.MainThread.run(libgcj.so.7)
Caused by: java.lang.ClassNotFoundException: ./libs/saxon8-dom.jar
   at java.lang.Class.forName(libgcj.so.7)
   at gnu.java.lang.MainThread.run(libgcj.so.7)

2- mon argument est un dossier qui se trouve sur le réseau local sur une machine windows (la je l'avais copié sur la mahcine linux) mais en vrai ca doit etre sur une machine.

Donc je vous demander de m'aider sur ces deux points svp :
debugger mon porblème d'exécution
comment declarer le chemin du rep en réseau?

Merci d avance

Hors ligne

#2 Le 31/01/2007, à 01:48

MrCrapaud

Re : Problème d'exécution Java sous Ubuntu

Salut!
Bon, alors, la ClassNotFoundException, c'est quand il arrive pas à accéder à une certaine classe (par exemple, j'ai eu ça quand j'essayais d'accédr à une classe qui était pas compilée), mais là, avec tes .jar, j'avoue que je sais pas trop comment faire. Je suppose que le fichier auquel ton erreur fait référence est une librairie, mais si c'est ça je sais pas trop comment faire... peut-être les mettre dans le CLASSPATH, mais je suis vraiment pas sûr.
Surtout, en fait, je connais pas ces problèmes, parce que je fais tout sous eclipse. Pourquoi tu l'installes pas aussi sur linux? A part si tu as un amd64, je crois, je pense que c'est le meilleur choix, surtout si tu es vachement habitué à eclipse.
Bon, enfin, si tu as une raison qui fait que tu peux pas installer eclipse, dis-le moi, je fouillerai un peu mieux demain.

Hors ligne

#3 Le 31/01/2007, à 01:58

JohnnyWalker

Re : Problème d'exécution Java sous Ubuntu

Merci pour ta réponse rapide MrCrapaud!
Bah en fait meme avec eclipse il me sortait des erreurs c'est pour ca que je suis passé en mode console !!! (j'aurai pa du)
Est ce que la commande que j'ai tapé est la bonne?
En fait j'ai pris le .jar exporté à partir d'Eclipse/Windows et j'ai copié aussi les libs (à partir de mon workspace) . J'ai tt mis dans un repertoire. (projet.jar et libs). apres j'ai lancé ma ligne de commande marqué plus haut. Est ce que c'est bon?

Hors ligne

#4 Le 31/01/2007, à 18:14

Ver Rader

Re : Problème d'exécution Java sous Ubuntu

Salut Johnny,

il y a sans doute plusieurs problèmes, mais le plus évident est la mauvaise syntaxe dans ta ligne de commande.

Si, par exemple, tu as dans ton répertoire libs les fichiers toto.jar, titi.jar et tutu.jar et que tu tapes :

java -cp ./libs/*.jar Application Arguments

ta ligne de commande est interprétée par ton shell qui regarde ce qui se cache derrière l'étoile et le transforme en :

java -cp ./libs/titi.jar ./libs/toto.jar ./libs/tutu.jar Application Arguments

avant d'être exécutée. Donc, la machine virtuelle Java pense que seul le «mot» qui suit -cp (soit ./libs/titi.jar) forme ton CLASSPATH, et que le mot suivant (./libs/tutu.jar) est le nom de la classe qui contient ton main(), tout les mots qui suivent étant pris comme arguments à fournir à ce main.

Dans ton cas, le deuxième fichier dans la liste de ./libs/*.jar doit être ./libs/saxon8-dom.jar, et c'est donc ce mot qu'il prend pour le nom de la classe où se trouve le main.

Une solution consiste donc à lister explicitement tous les jars derrière -cp  en les séparant par des deux-points (:) au lieu d'utiliser l'etoile, comme-ceci :

java -cp ./libs/titi.jar:./libs/toto.jar:./libs/tutu.jar Application Arguments

HTH !

Ver

Hors ligne