PDA

Afficher la version complète : [Réglé] problème avec javacc



Link
24/04/2007, 00h57
Bonsoir,

j'ai besoin d'utiliser javacc (un générateur de parsers pour java de la même manière pour yacc pour ceux qui conaissent) pour mon projet (un des outils nescessaires pour mener à bien mon projet).

et là :
je l'ai installé par yast:

00:54 zelda:~ > javacc
Exception in thread "main" java.lang.NoClassDefFoundError: error:

je pesais à une mauvaise installation (1ère réflex, histoire de version en autre):
j'ai donc supprimé dans yast puis un:

smart update
smart install javaccj'ai toujours le même messag.

autant le faire:
j'ai pris directement le package chez son auteur https://javacc.dev.java.net/
et j'ai toujour le même msg.

j'ai un peu googlé (un peu de recherche seulement car je commence à avoir sommeil http://www.alionet.org/style_emoticons/<#EMO_DIR#>/sad.gif ), et aperçu que je suis pas le seul mais je n'ai pas encore trouvé la solution

pour info:
00:44 zelda:~ > java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode)
00:54 zelda:~ > javac -version
javac 1.6.0et eclipse marche sans pb

donc si vous avez une idée ?

merci d'avance http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif
Link

Link
24/04/2007, 02h37
finalement le sommeil je le laisse à coté http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

après quelques bidouilles 'merci eclipse et avec son interface agréable' j'ai trouvé une solution:

chez moi:

java -classpath /usr/share/java/javacc.jar javacc MaGrammairefacile.jj
et ça marche !

mais ce n'est ce que je veux,
je voudrais que

javacc MaGrammairefacile.jjmarche et que

javaccne me renvoit pas une exception

en attandant j'ai ma solution http://www.alionet.org/style_emoticons/<#EMO_DIR#>/cool.gif

merci d'avance,

Heero_Yuy
24/04/2007, 08h15
Salux,

Je ne connais pas javacc, mais si pour compiler tu dois écrire :


java -classpath /usr/share/java/javacc.jar javacc MaGrammairefacile.jj

alors pourquoi ne pas créer un alias dans .bashrc (se trouvant dans ton répertoire personnel), du style :


alias myjavacc='java -classpath /usr/share/java/javacc.jar javacc'

Ainsi, pour compiler, tu n'auras plus qu'à faire :


myjavacc MaGrammairefacile.jj

Link
24/04/2007, 08h59
Salux,

merci angel59 d'avoir répondu aussi vite http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif

j'avais pensé aussi mais si javacc me renvoit une exeption donc qu'il est mal configuré quelque part (le path)

oui effectivement alias marche (comme il ne fait que remplacer un mot par un autre => le path non changé)

si j'exécute

myjavacc ~/chemin/de/maGrammaire.jj

les fichiers générés (maGrammaire.java et les autrres) sont dans le répertoire courant ou j'exécute la commande et non dans le répertoire ou il y a maGrammaire.jj (il suffit donc pour l'instant de me placer ou il y mon fichier maGrammiare.jj pour exécuter...)

au moins je peux traivailler...

j'essairai de trouver la solution en rentrant,
et si vous en avez http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

galagann
24/04/2007, 09h18
Il manque la définition de la classe principale ou elle est erronée, crée un manifest :
Manifest-Version: 1.0
Main-Class: ma.classe.principale

Link
24/04/2007, 16h37
tu pourraît precisé un peu stp (j'en suis navré), définir le manifest pour javacc.jar (ou pour le fichier maGrammaire.jj qui contient la classe principale ou ...?).

maGrammaire.jj

PARSER_BEGIN(maGrammaire)
import java.util.*;
public class maGrammaire {
public static void main(String[] args) {
//codes
}
}
PARSER_END(maGrammaire)
...

car au ébut je n'ai que le fichier maGrammaire.jj

comme je pensais à un pb de CLASSPATH
j'ai mis:

export CLASSPATH=$CLASSPATH:/usr/share/java/javacc.jardans ~/.bashrc
mais rien n'a changé,

ce pb n'est pas dramatique pour moi puisque je peux faire autrement http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif
je voudrais just savoir pourquoi ça ne marche pas

merci

Link
24/04/2007, 19h02
Ca y est, mon pb a été résolu.

avant j'avais la version 1.6.0 de java et javac (j'ai fait une update récemment)

j'ai donc fait une downgrad de java
je repasse à 1.5.0 pour javac et ça marche finalement:


18:43 zelda:~ > javacc
Java Compiler Compiler Version 3.2 (Parser Generator)

Usage:
javacc option-settings inputfile
...etc

j'avais dit:

les fichiers générés (maGrammaire.java et les autrres) sont dans le répertoire courant ou j'exécute la commande et non dans le répertoire ou il y a maGrammaire.jjça semble normal, il faut vraiment que je me déplace vers le répertoire courant => en réfléchissant cela me semble logique puisque les fichiers générés et le fichier maGrammaire.jj n'ont pas besoin d'être dans le même réperoire ("il n'y a aucune utilité")...

je pense que la vesion 1.6.0 de java (via YasT2 ou smart) s'installe mal dans le système, en tout cas pour être compatible avec javacc, car sur le site https://javacc.dev.java.net/ => JavaCC works with any Java VM version 1.2 or greater.

et si je veux profiter (utiliser) la version 1.6.0 de javac (et javacc)=> il y a un moyen l'alias (pas mal comme idée angel59 http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif finalement)

merci à vous deux de m'avoir aidé,
pour galagann si tu as trouvé la solution je suis toujour preneur bien sûr http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif
ceci dit le pb est réglé !

A plux

ps: au hasard si quelqu'un a réussi à faire marche javacc avec java 1.6.0 (sans l'alias http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif ), qu'il fasse signe merci d'avance

Heero_Yuy
25/04/2007, 08h35
et si je veux profiter (utiliser) la version 1.6.0 de javac (et javacc)=> il y a un moyen l'alias (pas mal comme idée angel59 http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif finalement)[/b]

C'est une astuce comme une autre.

D'ailleurs, pour un développeur l'alias peut vraiment être utile, notamment pour la compilation de codes C :


gcc -W -Wall -pedantic -ASCII -o mon_prog mon_prog.c

est vraiment fastidieux. Et s'il fallait taper cette ligne à chaque fois, on aurait pas fini. C'est pourquoi un petit alias :


alias mygcc='gcc -W -Wall -pedantic -ASCII -o'

et hop, pour compiler :


mygcc mon_prog mon_prog.c

C'est quand même plus court, non ? http://www.alionet.org/style_emoticons/<#EMO_DIR#>/tongue.gif

Amuses-toi bien avec Java et Javacc http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif

Link
25/04/2007, 17h13
oui, effectivement l'alias est tres pratique. il faut vraiment créer l'alias avec les options qu'on s'en serve souvent => monCompilateur_préféré sinon on revient à la case de départ.

merci encore !

A plux,