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

avec Java Discussion :

Erreur au lancement d'un .java après compilation


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Erreur au lancement d'un .java après compilation
    Bonsoir,
    J'ai téléchargé tout ce qui est nécessaire au fonctionnement de java, mes compilations avec javac fonctionnent parfaitement jusqu'ici mais impossible de lancer le fichier par la suite.
    Mon IUT m'a donné un fichier pour tester le bon fonctionnement, le javac fonctionne, puis en tapant java Test j'obtiens le message d'erreur suivant: "Erreur: Impossible de trouver ou charger la classe principale Test"
    Je n'ai jamais rencontré ce problème en cours et après quelques recherches je n'ai rien trouvé de bien fructueux
    Merci d'avance
    Voici ce que contient le fichier par ailleurs
    Nom : Capture.JPG
Affichages : 623
Taille : 69,5 Ko

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    On obtient ce message, lorsque le fichier .class indiqué dans la commande ne peut être trouvé (n'est pas dans le dossier courant, ou pas d'indication de classpath correct).

    Par exemple, le fichier Test.java est dans un dossier C:\java\src, tu te places dans C:\java et tu lances javac src\Test.java. Le fichier compile bien, mais [c]java src\Test[\c] affiche le message que tu indiques, parce que le fichier .class n'est pas dans le dossier java mais dans un sous dossier src.

    Quelle est exactement la commande que tu lances ? Quelle structure de dossiers/fichiers as-tu ? Où est tu placé lorsque tu lances javac et java ? Après avoir compilé le fichier .java, vois-tu bien dans le dossier un fichier Test.class ?

    Normalement, voici le processus de compilation puis d'exécution (ici sous Windows, sous linux ou max, ce sera assez similaire), avec un fichier dans le dossier où je me place pour lancer les commandes javac et java :

    C:\testjava>dir
    Le volume dans le lecteur C s’appelle XX
    Le numéro de série du volume est XXXX-XXXX

    Répertoire de C:\testjava

    29/09/2019 00:32 <DIR> .
    29/09/2019 00:32 <DIR> ..
    29/09/2019 00:31 171 Test.java
    1 fichier(s) 171 octets
    2 Rép(s) 134 795 849 728 octets libres

    C:\testjava>javac Test.java

    C:\testjava>dir
    Le volume dans le lecteur C s’appelle XX
    Le numéro de série du volume est XXXX-XXXX

    Répertoire de C:\testjava

    29/09/2019 00:36 <DIR> .
    29/09/2019 00:36 <DIR> ..
    29/09/2019 00:36 853 Test.class
    29/09/2019 00:31 171 Test.java
    2 fichier(s) 1 024 octets
    2 Rép(s) 134 795 829 248 octets libres

    C:\testjava>java Test
    i: 5 j: 28

    C:\testjava>
    Tu peux également indiquer à la commande java où chercher les .class lorsque tu lances la commande dans un autre dossier que celui qui contient le .java, avec l'option -cp (ou -classpath). Par exemple :

    C:\testjava>dir src
    Le volume dans le lecteur C s’appelle XX
    Le numéro de série du volume est XXXX-XXXX

    Répertoire de C:\testjava\src

    29/09/2019 00:32 <DIR> .
    29/09/2019 00:32 <DIR> ..
    29/09/2019 00:31 171 Test.java
    1 fichier(s) 171 octets
    2 Rép(s) 134 795 849 728 octets libres

    C:\testjava>javac src\Test.java

    C:\testjava>dir src
    Le volume dans le lecteur C s’appelle XX
    Le numéro de série du volume est XXXX-XXXX

    Répertoire de C:\testjava\src

    29/09/2019 00:36 <DIR> .
    29/09/2019 00:36 <DIR> ..
    29/09/2019 00:36 853 Test.class
    29/09/2019 00:31 171 Test.java
    2 fichier(s) 1 024 octets
    2 Rép(s) 134 795 829 248 octets libres

    C:\testjava>java -cp src Test
    i: 5 j: 28

    C:\testjava>

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci d'une réponse aussi détaillée
    Mon fichier .class se retrouve bien dans le même répertoire que mon .java c'est ce que je n'arrive pas à comprendre
    Nom : Test.JPG
Affichages : 522
Taille : 47,4 Ko
    Je ne suis pas certain de tout comprendre étant donné que je débute mais je n'ai aucun dossier src et je n'en ai jamais entendu parler
    Je me situe dans le même chemin en lançant mon javac puis java comme vous pouvez le voir et on voit bien les 2 fichiers Test.java et Test.class.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Est-ce que tu peux exécuter les commandes suivantes et me copier les résultats (en texte, c'est plus simple et pratique qu'en image) :

    1. where javac
    2. where java
    3. type Test.java

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je n'arrive pas à copier ce qui est dans mon terminal c'est pourquoi je mets des images, je dois pas connaître l'astuce désolé
    Alors pour ce qui est de la commande "where" elle ne fonctionne pas: " 'where' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes."

    Pour Type Test.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Test
    {
        public static void main<String args[]>
        {
                 int i,j:
     
                 i=5;
                 j=28;
     
                 System.out.println < "i: " + i + " j: " + j >;
        }
    }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Le Test.java que tu montres n'est pas compilable : il y a des inférieurs à la place des parenthèses ouvrantes et des supérieurs à la place des parenthèses fermantes (< ua lieu de ( et > au lieu de )).
    Dans ces conditions, javac Test.java devrait afficher des messages d'erreur de compilation. Rien ne garantit donc que le .class corresponde au .java.

    Citation Envoyé par Waterfall911 Voir le message
    Alors pour ce qui est de la commande "where" elle ne fonctionne pas: " 'where' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes."
    Tu as une version de Windows antérieure à Windows 7 ? Sauf erreur, where.exe est censé être distribué par défaut à partir de cette version.

    Si c'est le cas, tu peux simuler la commande en créant un fichier whereis.bat avec ceci :
    Code dos : 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
    @echo off
    setlocal enabledelayedexpansion
    set var_a=%1
    call :sub %var_a%
    if exist %var_b% goto exit
    for %%i in ( .com .exe .cmd .bat) do (
     call :sub %var_a%%%i
     if exist !var_b! goto exit
    )
    echo INFO: could not find files for the given pattern(s) 1>&2 
    set "var_a="
    set "var_b="
    exit /b 1
     
    :sub
    set var_b=%~$PATH:1
    goto :EOF
     
    :exit
    echo %var_b%
    set "var_a="
    set "var_b="
    exit /b 0

    Ensuite, il fonctionne comme where : whereis javac.

    Ce que je cherche à savoir :
    1. si c'est un exécutable ou une commande (un bat ou un cmd) qui est exécuté. En cas de commande, il faudrait connaître les paramètres
    2. accessoirement la version par le nom du dossier (ce n'est pas assuré, mais c'est un indice de départ). Lancer java -version nous donnerait l'exacte version. Non pas que la version puisse avoir une quelconque pertinence par rapport à l'erreur, mais si la réponse n'est pas normale, l'explication d'une exécution anormale est forcément attentue.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    En effet dans le terminal il y a bien des "<,>" à la place des "(,)". Or en éditant avec Notepad ++, sans toucher à rien, il m'affiche bien des parenthèses.

    J'essaie actuellement sur mon PC portable, windows 8.1
    J'ai sinon un PC fixe avec windows 10 mais je n'ai pas encore testé dessus.
    Si je suis censé avec la commande de base et qu'elle ne fonctionne pas alors je n'y comprends rien...

    Alors pour le fichier bat.
    Si je le lance depuis le bureau un terminal s'ouvre puis se ferme directement
    Si je le lance depuis le terminal j'obtiens ce message d'erreur "INFO: could not find files for the given pattern(s)

    Version de java:
    C:\Cours\Java>java -version
    java version "1.8.0_221"
    Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Waterfall911 Voir le message
    En effet dans le terminal il y a bien des "<,>" à la place des "(,)". Or en éditant avec Notepad ++, sans toucher à rien, il m'affiche bien des parenthèses.
    Hum, c'est étrange. Cela peut venir de la police utilisées par notepad++ qui te donne cette impression. Essaye avec un autre éditeur.

    Citation Envoyé par Waterfall911 Voir le message
    J'essaie actuellement sur mon PC portable, windows 8.1
    J'ai sinon un PC fixe avec windows 10 mais je n'ai pas encore testé dessus.
    Si je suis censé avec la commande de base et qu'elle ne fonctionne pas alors je n'y comprends rien...
    where.exe est normalement dans le dossier C:\Windows\System32. Est-ce ou n'est-ce pas le cas ?

    Citation Envoyé par Waterfall911 Voir le message
    Alors pour le fichier bat.
    Si je le lance depuis le bureau un terminal s'ouvre puis se ferme directement
    Il faut le lancer en console. Par double-clic, ça n'a aucun sens.

    Citation Envoyé par Waterfall911 Voir le message
    Si je le lance depuis le terminal j'obtiens ce message d'erreur "INFO: could not find files for the given pattern(s)
    C'est que les programmes ne sont pas trouvables. Ou qu'il y a une subtilité avec 8.1 qui m'échappe. Je n'ai plus de machine sous 8.1 depuis belle lurette pour vérfier.

    Quoiqu'il en soit, dans des conditions normales d'os et d'installation de jdk, avec un source compilable, et des emplacements conformes, soit ce que tu montres à priori, il ne devrait pas y avoir de souci. Donc il y a quelque chose d'anormal dans l'un des éléments et je ne peux pas le voir à distance, sauf par l’intermédiaire de ce que tu m'en montres ici dans la discussion. Et pour l'instant, j'ai épuisé toutes les hypothèses qui me viennent à l'esprit.

Discussions similaires

  1. Erreur au lancement de programme: java.lang.ClassCastException
    Par wilfryjules dans le forum Général Java
    Réponses: 16
    Dernier message: 05/07/2011, 18h16
  2. Réponses: 7
    Dernier message: 11/08/2008, 19h12
  3. [openSuse10.3] erreur apres compilation
    Par wodel dans le forum SUSE
    Réponses: 0
    Dernier message: 08/05/2008, 19h37
  4. [VC++6>MFC] messagebox erreur apres compilation
    Par philo71 dans le forum MFC
    Réponses: 2
    Dernier message: 03/08/2006, 15h58
  5. Erreur après compilation : cannot execute binary file
    Par Djo00 dans le forum Administration système
    Réponses: 8
    Dernier message: 21/07/2006, 16h26

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