2
votes

Impossible de trouver la méthode principale (String []) dans la classe: TapeDeck. La méthode principale est dans l'autre classe qui exécute le programme

J'ai deux cours. Lorsque je mets la classe TapeDeckTestDrive en premier sur l'éditeur de texte, cela fonctionne bien. Lorsque je mets la classe TestDrive en premier, cela donne l'erreur qu'il ne peut pas trouver la classe principale. Pourquoi est-ce?

class TapeDeckcTestDrive{
    public static void main(String[] args){
        TapeDeck t = new TapeDeck();
        t.canRecord = true;
        t.playTape();

        if (t.canRecord == true) {
            t.recordTape();
        }
    }
}

class TapeDeck {
    boolean canRecord = false;
    void playTape(){
        System.out.println("tape playing");
    }
    void recordTape(){
        System.out.println("tape recording");
    }
}

ERREUR SUR CE FORMAT

VS

TRAVAUX SUIVANTS FINE:

class TapeDeck {
    boolean canRecord = false;
    void playTape(){
        System.out.println("tape playing");
    }
    void recordTape(){
        System.out.println("tape recording");
    }
}

class TapeDeckcTestDrive{
    public static void main(String[] args){
        TapeDeck t = new TapeDeck();
        t.canRecord = true;
        t.playTape();

        if (t.canRecord == true) {
            t.recordTape();
        }
    }
}


9 commentaires

quel est votre nom de classe (fichier) java?


Le moyen le plus simple, et le meilleur aussi, de résoudre ce problème est d'avoir une classe par fichier.


@Abdul Hussain Veuillez indiquer le nom du fichier


ça marche bien, ça donne l'erreur : qu'est-ce que "ça". Comment exécutez-vous votre application?


@Brother Ok donc j'ai créé deux fichiers. Les deux noms de fichier correspondent au nom de la classe. Cependant, j'obtiens une erreur différente maintenant lorsque j'exécute la classe TapeDeckTestDrive. TapeDeckTestDrive.java:3: erreur: impossible de trouver le symbole TapeDeck t = new TapeDeck ();


@JBNizet sur le terminal cmd. "java TapeDeckTestDrive.java


Ce n'est pas la meilleure façon d'exécuter une classe. Commencez par compiler votre code avec javac. Ensuite, vous utilisez java et passez le nom complet de la classe contenant la méthode main.


@JBNizet ok merci. J'ai appris cela, mais pour une raison quelconque, j'ai oublié de mettre en œuvre cela. J'obtiens l'erreur suivante maintenant: Exception dans le thread "main" java.lang.IllegalAccessError: impossible d'accéder à la classe TapeDeck de la classe TapeDeckTestDrive (TapeDeck est dans le module sans nom du chargeur 'app'; TapeDeckTestDrive est dans le module sans nom du chargeur com.sun .tools.javac.launcher.Main $ MemoryClassLoader @ 18bf3d14) sur TapeDeckTestDrive.main (TapeDeckTestDrive.java:3) Je vais continuer à comprendre cela par moi-même mais l'aide est appréciée.


@Brother C'est complètement faux. Ne postez pas de fausses informations ou de suppositions ici. Java recherche la méthode principale dans la classe que vous spécifiez.


4 Réponses :


0
votes

Je l'ai divisé en deux fichiers et j'ai ajouté public aux classes / méthodes ainsi qu'au booléen. Maintenant, le code s'exécute.


0 commentaires

1
votes

Tout d'abord, vous devez compiler le fichier en utilisant javac . Ensuite, vous devez exécuter le fichier.

Nom de classe où est écrit main.

javac filename.java
java classname


0 commentaires

0
votes

Vous pouvez exécuter le programme java de deux manières.

  1. Exécutez directement le programme java par java example_program.java Dans ce type, la compilation et l'exécution se produisent au moment de l'exécution. C'est Les codes d'octets sont générés et exécutés immédiatement (fonctionne comme un interprète) Donc, Vous devez d'abord utiliser la superclasse (contenant la méthode principale) suivie par d'autres classes composées.

Remarque: Aucun fichier .class ne sera généré. Cela signifie qu'il générera du code d'octet en interne et s'exécutera. Le programmeur ne peut pas afficher le fichier de classe.

  1. Dans Second type, First, vous devez compiler javac example_program.java . Il générera la example_program.class . Ensuite, exécutez le fichier de classe en utilisant java example_program . Ici, l'ordre d'écriture des classes n'a pas d'impact. vous pouvez écrire les classes dans n'importe quel ordre. cela fonctionnera bien.

0 commentaires

2
votes

Après avoir compilé le code à l'aide de la commande:

java fileName

Exécutez le fichier java .class en spécifiant uniquement fileName sans .java extension

javac fileName.java

si vous utilisez fileName.java , il n'exécutera pas le .class fichier; il essaiera d'interpréter le fichier .java . si vous souhaitez interpréter un fichier .java , la classe parente doit contenir la méthode main (String []) .


0 commentaires