Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 19 sur 19
  1. #1
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut Intégrer des fichiers .java non compilés dans un autre programme

    Bonjour 'a tous,
    A partir d'un fichier XML je genere, avec la console, des fichiers .java (dans un dossier src). je dois ensuite utiliser ces dossiers comme des librairies dans un nouveau programme java, il faudrait donc que j'aie acces aux classes de mes fichiers .java.
    j'ai tente de maniere un peu hasardeuse d'integrer un .jar cree manuellement 'a partir de mes dossiers mais bien entendu ca ne fonctionne pas, et egalement de copier coller mes dossiers dans eclipse, mais je n'ai toujours pas acces aux classes.
    j'imagine que le souci est que ces fichiers ne sont pas transformes en .jar. est ce que vous auriez une idee pour transformer automatiquement ces fichiers en .jar pour ensuite pouvoir utiliser les methodes qu'ils comportent?
    Merci beaucoup d'avance!

  2. #2
    Membre Expert
    Homme Profil pro Mathieu
    Ingénieur développement logiciels
    Inscrit en
    avril 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme Mathieu
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2004
    Messages : 1 181
    Points : 1 674
    Points
    1 674

    Par défaut

    Il faut surtout que tes fichiers .java soient compilés en .class.

  3. #3
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    d'accord, et est ce que j'aurais un moyen de faire ca? si oui, est ce possible dans un batch?

  4. #4
    Expert Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 220
    Points : 34 910
    Points
    34 910

    Par défaut

    si tu en utilse un, ton IDE devrais faire le travail. Sinon, en ligne de commande, c'est l'application javac qu'il faut utiliser, faisant partie du JDK. Pour automatiser le travail, tu peux t'orienter soit vers maven, soit vers ant.
    Tchize (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

  5. #5
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    j'ai deja essaye de creer mes classes avec javac mais il me sort une exception:
    exception in thread "main"
    et pour cause, il n'y a pas de main dans mes fichiers, contrairement aux exemples des tutos que j'ai parcourus. donc est ce que ca veut dire que je n'ai pas moyen d'avoir acces 'a ces classes?

  6. #6
    Membre Expert
    Homme Profil pro Mathieu
    Ingénieur développement logiciels
    Inscrit en
    avril 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Nom : Homme Mathieu
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : avril 2004
    Messages : 1 181
    Points : 1 674
    Points
    1 674

    Par défaut

    Tu as du te tromper de commande, il n'y a pas besoin de méthode main pour compiler.
    Montre toute ta trace.

    Sinon, le plus simple serait de créer un projet sous ton IDE et de mettre tes sources dans ce projet.

  7. #7
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    @echo off
    set MYCLASSPATH="C:\Program Files\VE\veapi.jar;C:\Program Files\VE\marchall-client.jar;VEservice.jar"
    "C:\Program Files\Java\jdk1.7.0_03\bin\java" -cp %MYCLASSPATH% ve.VE -a "GT HTD" -d "FileName" -v rem je genere un fichier xml

    "C:\Program Files\Java\jdk1.7.0_03\bin\java" -classpath "..\generation.jar" generation.commands.CommandLine -script=toto.txt rem je genere des fichiers .java grace 'a ce fichier

    md bin
    "C:\Program Files\Java\jdk1.7.0_03\bin\javac" -sourcepath src -d bin\ src\grammars\toto\definitions\DHTJKB-01.java rem DHTJKB-01 est l'un des fichiers generes, sa classe s'appelle egalement DHTJKB-01
    "C:\Program Files\Java\jdk1.7.0_03\bin\java" -cp bin grammars.toto.definitions.DHTJKB-01
    rem ici j'essaie d'obtenir la classe de ces fichiers. (en fait j'aimerais pouvoir utiliser les classes de tous les fichiers generes...)


    je ne veux pas le compiler directement avec eclipse parce que tout le mecanisme devra pouvoir etre appele par php, 'a la fin. les fichiers generes sont differents 'a chaque fois, j'ajouterai d'ailleurs les classes par ligne de commmande avant d'appeler le programme

  8. #8
    Membre expérimenté Avatar de unknow0
    Homme Profil pro
    Inscrit en
    juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 452
    Points : 515
    Points
    515

    Par défaut

    Citation Envoyé par getrude Voir le message
    "C:\Program Files\Java\jdk1.7.0_03\bin\java" -cp bin grammars.toto.definitions.DHTJKB-01
    rem ici j'essaie d'obtenir la classe de ces fichiers. (en fait j'aimerais pouvoir utiliser les classes de tous les fichiers generes...)
    l'erreur viens de la, je pense, ici tu veux lancer la class grammars.toto.definitions.DHTJKB-01 cad executer la method main de cette class .... sauf qu'elle n'existe pas ^^

    "j'aimerais pouvoir utiliser les classes de tous les fichiers generes" a cette etape ils sont compiler et donc utilisable, tant qu'ils sont dans le classpath, par d'autre class.

    je pence que tu voudrais plutot utilisse une class de test ou ton programe les utilisant ^^

  9. #9
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    ah oui en effet, j'ai suivi betement http://skebir.developpez.com/tutoriels/java/ant/

    md bin
    javac -d bin\ src\org\sdf\HelloWorld.java
    java -cp bin org.sdf.HelloWorld

    Après la compilation du fichier source, on aura l'arborescence suivante :
    uniquement des classes, pas encore de .jar
    mais si je m'en tiens 'a javac -sourcepath src -d bin\ src\org\sdf\HelloWorld.java
    ("C:\Program Files\Java\jdk1.7.0_03\bin\javac" -sourcepath src -d bin\ src\grammars\toto\definitions\DHTJKB-01.java pour moi), ca ne me genere rien du tout dans bin

  10. #10
    Expert Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 220
    Points : 34 910
    Points
    34 910

    Par défaut

    ce serait quand même bien que, en plus des commande, on aie ce qui se passe à l'écran... Sinon on va pas pouvoir deviner ce qui se passe.
    Tchize (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

  11. #11
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    alors en fait le souci vient de l'inclusion de librairies (desolee c'etait un peu idiot de pas decomposer)

    il me dit
    symbol: class edi; error: cannot find symbol

    cette classe se trouve dans un .jar (Grammars.jar), donc j'essaie de l'integrer

    md bin
    "C:\Program Files\Java\jdk1.7.0_03\bin\java" -classpath .\src\grammars\grammars.toto.definitions.DHTJKB-01.java;.\Grammars.jar DHTJKB-01
    "C:\Program Files\Java\jdk1.7.0_03\bin\javac" -sourcepath src -d bin\ src\grammars\toto\definitions\DHTJKB-01.java


    mais il me dit:
    error:could not find or load main class DHTJKB-01 (en effet elle n'a pas de main)

    (du coup error: package grammars does not exist)

  12. #12
    Membre expérimenté Avatar de unknow0
    Homme Profil pro
    Inscrit en
    juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 452
    Points : 515
    Points
    515

    Par défaut

    Citation Envoyé par getrude Voir le message
    md bin
    "C:\Program Files\Java\jdk1.7.0_03\bin\java" -classpath .\src\grammars\grammars.toto.definitions.DHTJKB-01.java;.\Grammars.jar DHTJKB-01
    "C:\Program Files\Java\jdk1.7.0_03\bin\javac" -sourcepath src -d bin\ src\grammars\toto\definitions\DHTJKB-01.java
    deja faut compiler avans d'executer

    ensuite c'est le .class est pas le .java qu'il te faut sur le classpath.
    donc:
    Code :
    "C:\Program Files\Java\jdk1.7.0_03\bin\java" -classpath bin;.\Grammars.jar DHTJKB-01

  13. #13
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    ça me donne toujours la même erreur: could not find or load main class DHTJKB-01 (qui est une public final class et ne contient pas de main)

  14. #14
    Membre expérimenté Avatar de unknow0
    Homme Profil pro
    Inscrit en
    juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 452
    Points : 515
    Points
    515

    Par défaut

    ha oui pas fait gaffe a sa mais comme je l'ai dis plus haut:
    Citation Envoyé par Unknow0
    je pence que tu voudrais plutot utilisse une class de test ou ton programe les utilisant ^^

  15. #15
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    mmm oui mais pour les utiliser il faut que je les transforme en .class si j'ai bien compris!
    mais je pourrais pas tout simplement faire un truc du genre
    "C:\Program Files\Java\jdk1.7.0_03\bin\javac" -source Grammars.jar -d bin\ src\grammars\toto\definitions\DHTJKB-01.java
    histoire qu'il comprenne directement le .jar 'a l'interieur? mais source n'est visiblement pas la bonne commande et je ne trouve pas la bonne


    edit: ca fonctionne avec -classpath (j'etais pourtant sure d'avoir teste...)

  16. #16
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    ca a bien transforme les .java en .class mais maintenant j'ai un nouveau souci: quand je fais DHTJKB-01.instance(); (bien reconnu) j'ai cette erreur:

    Exception in thread "main" java.lang.NoClassDefFoundError: grammars/toto/definitions/DHTJKB-01
    at Bench.main(Bench.java:70)
    Caused by: java.lang.ClassNotFoundException: grammars.toto.definitions.DHTJKB-01




    et voila les causes d'apres le net:

    1) Class is not available in Java Classpath. (je pense que si puisque c'est bien reconnu)
    2) You might be running your program using jar command and class was not defined in manifest file's ClassPath attribute.
    3) Any startup script is overriding Classpath environment variable.


    je pense que c'est la cause 2 et que je dois donc continuer de suivre ce super tuto http://skebir.developpez.com/tutoriels/java/ant/ mais un manifest c'est bien quand j'ai un .jar, non? or la j'ai pas de main donc pas de jar.. enfin si j'ai un main mais c'est dans lui que je veux utiliser les classes...

  17. #17
    Membre expérimenté Avatar de unknow0
    Homme Profil pro
    Inscrit en
    juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 452
    Points : 515
    Points
    515

    Par défaut

    Citation Envoyé par getrude Voir le message
    ca a bien transforme les .java en .class mais maintenant j'ai un nouveau souci: quand je fais DHTJKB-01.instance(); (bien reconnu)
    forcement sa fait partie de la class java.lang.Class.

    Citation Envoyé par getrude Voir le message
    j'ai cette erreur:

    Exception in thread "main" java.lang.NoClassDefFoundError: grammars/toto/definitions/DHTJKB-01
    at Bench.main(Bench.java:70)
    Caused by: java.lang.ClassNotFoundException: grammars.toto.definitions.DHTJKB-01




    et voila les causes d'apres le net:

    1) Class is not available in Java Classpath. (je pense que si puisque c'est bien reconnu)
    2) You might be running your program using jar command and class was not defined in manifest file's ClassPath attribute.
    3) Any startup script is overriding Classpath environment variable.
    les 3 meme cause: le classpath ne contient pas ta class


    je pense que c'est la cause 2 et que je dois donc continuer de suivre ce super tuto http://skebir.developpez.com/tutoriels/java/ant/ mais
    Citation Envoyé par getrude Voir le message
    un manifest c'est bien quand j'ai un .jar, non?
    oui ^^
    Citation Envoyé par getrude Voir le message
    si j'ai un main mais c'est dans lui que je veux utiliser les classes...
    donc quelle class? et comment tu l'execute?

  18. #18
    Nouveau Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    février 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : février 2012
    Messages : 110
    Points : 31
    Points
    31

    Par défaut

    forcement sa fait partie de la class java.lang.Class.
    donc une classe de java? ce serait un curieux hasard puisqu'elle vient d'un de mes fichiers 'a moi...

    les 3 meme cause: le classpath ne contient pas ta class
    et ca je peux le faire dans eclipse?

    donc quelle class? et comment tu l'execute?
    la classe DHTJKB-01 toujours. euh je l'execute en cliquant sur run dans eclipse, mais je vais essayer en ligne de commande alors! thanks

  19. #19
    Membre expérimenté Avatar de unknow0
    Homme Profil pro
    Inscrit en
    juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 452
    Points : 515
    Points
    515

    Par défaut

    ha si c'est dans eclipse il faut pour ajouter quelque chose au classpath allez dans les propriété run/Debug>ton projet>claspath (et il faut que tu ajoute le dossier bin si c'est toujours dans se dossier que tu met les .class)

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •