IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

erreur exécution jar sous linux


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut erreur exécution jar sous linux
    bonjour,
    voici le code que j'utilise dans mon jar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    public class principlinux {
     
     
    	public static void main(String[] args) throws UnknownHostException {
     
    		InetAddress ip =InetAddress.getLocalHost();
     
    String dossierCourant= System.getProperty("user.home");
     
    		File f1 = new File (File.separator+"var"+File.separator+"log"+File.separator+"IBM_Support") ;
     
    		File[] strFilesDirs = f1.listFiles( );
    		File fil=null;
     
     
    			fil=strFilesDirs[0]; 
    			System.out.println(fil);
     
     
    		File[] strFilesDirs2 = fil.listFiles( );
    			for ( int j = 0 ; j < strFilesDirs2.length ; j ++ ) {	
    			File in=strFilesDirs2[j];
    				String nom=in.getName();
    				System.out.println(nom);
     
     
     
    		if(nom.contains("event_application_list.html") ||nom.contains("event_security_list.html") ||nom.contains("event_system_list.html") ||nom.contains("sr.html") ||nom.contains("system_overview.html")||nom.contains("syslog_secure.html")||nom.contains("syslog_boot.log.html")||nom.contains("syslog_cron.html")||nom.contains("syslog_messages.html") )
    {File out=new File(dossierCourant+File.separator+"as"+File.separator+nom);dep.copyFile(in, out);in.delete();}
    		else{in.delete();}
    			}fil.delete();
     
    	}
     
    }
     
     
     
     
     
     
     
     
     
    public static boolean copyFile(File source, File dest){
     
     
     
    		try{
    			// Declaration et ouverture des flux
    			java.io.FileInputStream sourceFile = new java.io.FileInputStream(source);
     
    			try{
    				java.io.FileOutputStream destinationFile = new java.io.FileOutputStream(dest) ;
     
    				try{
    					destinationFile = new FileOutputStream(dest);
     
    					// Lecture par segment de 0.5Mo 
    					byte buffer[] = new byte[512 * 1024];
    					int nbLecture;
     
    					while ((nbLecture = sourceFile.read(buffer)) != -1){
    						destinationFile.write(buffer, 0, nbLecture);
    					}
    				} finally {
    					destinationFile.close();
    				}
    			} finally {
    				sourceFile.close();
    			}
    		} catch (IOException e){
    			e.printStackTrace();
    			return false; // Erreur
    		}
     
    		return true; // Résultat OK  
    	}
     
    }

    lorsque je lance mon jar sous linux dans le dossier /root/SpiralAFservl la console me dis ceci :


    [root@spiral-majuv6test SpiralAFservl]java -jar recup1.jar
    Warning: -jar not understood. Ignoring.
    Exception in thread "main" java.lang.NoClassDefFoundError: recup1.jar
    at gnu.gcj.runtime.FirstThread.run() (/usr/lib/libgcj.so.5.0.0)
    at _Jv_ThreadRun(java.lang.Thread) (/usr/lib/libgcj.so.5.0.0)
    at _Jv_RunMain(java.lang.Class, byte const, int, byte const, boolean) (/usr/lib/libgcj.so.5.0.0)
    at __gcj_personality_v0 (/root/SpiralAFservl/java.version=1.4.2)
    at __libc_start_main (/lib/tls/libc-2.3.4.so)
    at _Jv_RegisterClasses (/root/SpiralAFservl/java.version=1.4.2)

    La jre est pourtant bien installé et mon code devrait marcher il n'y a que des liens dur avec des File.separator() !
    je ne comprend vraiment pas et la ça commence a me prendre beaucoup de temps, il est de plus en plus urgent pour moi de finir mon projet

    J'aurais besoin de reponses precises. Merci beaucoup !!!

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Que te donnes la commande suivante :
    a++

  3. #3
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut
    java version "1.4.2"
    gcj (GCC) 3.4.6 20060404 (Red Hat 3.4.6-9)
    Copyright © 2006 Free Software Foundation, Inc.
    Ce logiciel est libre; voir les sources pour les conditions de copie. Il n'y a PAS
    GARANTIE; ni implicite pour le MARCHANDAGE ou pour un BUT PARTICULIER.
    ça me donne ça. pour info j'ai testé mon code avec windows en remplaçant juste le lien dur entrant en haut et ça marche...mais toujours pas sur linux

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Tu utilises GCJ. Et une vieille version en plus (2006).
    Il serait préférable d'utiliser la JVM de Sun à la place...

    a++

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    si t'as bien installé le jre de chez sun, c'est alors qu'elle n'est pas la jvm par défaut de ton système. change la config ou donne le chemin complet:

    /chemin/ou/jre/est/intallee/bin/java -jar mon.jar

  6. #6
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut
    je peux rien changer ça doitr marcher pour tous les serveurs et yen a beaucoup je peux pas tous les configurer...
    de plus je en pense pas avoir le droit de modifier les JRE ya des truc qui tournent dessus

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Dans ce cas il faut te documenter sur ta version GCJ et sur son fonctionnement. Apparemment il n'accepte pas le paramètre -jar


    a++

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    je rajouterais qu'avec un gcj de 2006 tu risque la gloire. Sont implémentation actuelle n'est pas tout à fait complete et compatible avec sun, mais la version de 2006 n'était certainement pas des plus fonctionnelles!

    De plus, de mémoire, gcj n'est pas une machine virtuelle en tant que telle mais un compilateur qui convertit du byte code java en application native.


    edit: sur le site de gcj, c'est toujours indiqué: la pluspart des api graphiques ne sont pas implémentées. Tu ferais mieux d'embarquer une jvm avec ton installation. Les jvm de sun n'ont pas besoin d'être installée pour fonctionner et peuvent etre dézippée dans n'importe quel répertoire. Et tu peux en mettre autant que tu veux.

  9. #9
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut
    je pense que importer une jvm est le plus adapté puisqu'on vient de me dire que tous les serveurs n'avaient pas forcement la meme version java... cependant je ne sais pas comment je peu lancer mon jar executable avec une jvm perso...
    je vais tester avec le lien dur voir si mon code marche mais je dois avoir un logiciel le plus generique possible alors si je peux tout importer ça serait vraiment bien

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par kavdo34 Voir le message
    cependant je ne sais pas comment je peu lancer mon jar executable avec une jvm perso...
    en donnant le chemin vers java.

    Exemple de structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    monApp/
      jvm/......
      lib/
        meslibrairies.jar
      bin/
        monapplication.jar
        monapplication.sh
    dans monapplication.sh tu peux mettre ce genre de commande
    Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/sh
    location=`dirname $0` 
    ${location}/../jvm/bin/java -jar ${location}/monapplication.jar

    tu fais un gros tar.gz avec tout çà et tu l'installe partout.

  11. #11
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut
    voila le resultat de mon jar avec le lien dur comme tu m'a enoncé

    [root@spiral-majuv6test SpiralAFservl]/usr/java/j2sdk1.4.2_13/bin/java -jar recup1.jar
    Exception in thread "main" java.lang.UnsupportedClassVersionError: principlinux (Unsupported major.minor version 50.0)
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
    [root@spiral-majuv6test SpiralAFservl]

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    tu utilise un jdk 1.4 pour tenter d'exécuter des classes java 5! C ane peux pas marcher

  13. #13
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut
    oula mais c'est hyper compliqué !!!
    meme avec un tuto complet je suis meme pas sur d'y arriver

  14. #14
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut
    bon et concretement je vais devoir faire quoi? réécrire mes classes avec une version de java antérieure? si j'integre la jvm sa va marcher?

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    je dirais plutot prendre une version de java supérieur la 1.4 n'est de toutes facons plus supporté par sun et la 5 va tout doucement entrer en phase de fin de support. Embarque une java 6 avec ton code, y a rien de compliqué à ca, tu la met dans un sous répetroire de ton application et tu utilise ce binaire là pour lancer ton jar.

  16. #16
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    La version avec laquelle tu compiles correspond à la version minimum de compatibilité.

    Donc si tu compiles avec du Java 5 il te faudra du Java 5 au minimum...

    Si tu veux faire tourner cela sur du 1.4 il faudra impérativement compiler en 1.4.

    Il faut penser à cela avant la conception du programme !!!

    a++

  17. #17
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut
    mon jar doit il etre un jar executable ou non?
    je sais bien que jaurais du y reflechir avant mais je n'avais pas toutes les informations et je n'y ai pas pensé, c'est mon premier vrai gros programme que je réalise (je suis en stage)

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    si par executable, tu veux dire contenant un main, ca vaut mieux qu'il y en aie un. Sinon je vois pas trop ce que tu appelle un jar exécutable. L'exécutable c'est java, du point de vue de l'os

  19. #19
    Membre du Club
    Homme Profil pro
    Webmarketer
    Inscrit en
    Octobre 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmarketer

    Informations forums :
    Inscription : Octobre 2008
    Messages : 191
    Points : 52
    Points
    52
    Par défaut
    oui parce que dans mon export eclipse je peux choisir jar ou jar executable...
    bref,
    donc je telecharge le java jre6 pour linux et je le met dans le dossier contenant mon executable. Ensuite j'execute avec monjre.bin -jar monjar.jar
    C'est bien ça? ça me parrait trop simple jai du oublié quelque chose d'important non?

  20. #20
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    tu met jar executable dans eclipse (ca fera de toutes facons qu'indiquer le main dans le MANIFEST.MF, indispensable pour la commande -jar)

    non tu n'execute pas monjre.bin, le .bin téléchargé chez sun est une archive auto extractible. Tu l'extrait, tu copie ce qui est extrait dans le répertoire jvm/ dans mon exemple. ensuite tu teste et si c'est ok, tu package le tout dans un tar.gz et tu deploie

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Erreurs au lancement d'un jar sous linux
    Par CinePhil dans le forum Débuter avec Java
    Réponses: 28
    Dernier message: 06/10/2014, 16h04
  2. Exécution d'un .jar sous linux
    Par hnouna2007 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 28/07/2009, 15h46
  3. erreur de jar sous linux
    Par shawty dans le forum Langage
    Réponses: 2
    Dernier message: 16/05/2007, 16h56
  4. [Linux]Exécution Eclipse sous linux
    Par benny7 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 17/11/2005, 19h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo