Lancer un program

J'ai réalisé un program avec Visual Studio Code à partir du quel il fonctionne parfaitement.

J'ai voulu lancer ce program à partir de la CMD et là on me répond qu'il ne troue pas la main méthode.

<main methode not found in class>  alors quelle y existe bien.

est-ce que quelqu'un peut me dire pourquoi ?

Merci d'avance.

Cordialement.

ejb

5 réponses

  1. Contributeur

    bonjour, quel langage as-tu utilisé?

    0
    1. Modérateur

      Bonjour,

      Est-ce ce que le nom du fichier compilé est bien le même que celui de la classe dans le code ?

      De plus est-ce que tu as un package dans le code ? Dans ce cas il faut aussi que le fichier soit dans un dossier du même nom.

      Quant à la méthode main il faut qu'elle soit public static avec un paramètre de type String[]

      En cas de problème tu peux aussi nous montrer ton code pour que l'on t'aide plus précisément.


      0
      1. Bonjour,

        Merci de venir à mon aide.

        Mes fichiers son dans un code qui regroupe:

        vscode

        bin: les CLASS

        src: les java

        voici mon program d'appel:

        import javax.swing.JButton;

        import javax.swing.JFrame;

        import javax.swing.JOptionPane;

        import javax.swing.JPanel;

        import java.awt.*;

        import java.awt.event.*;


         

        public class JeuxDeTarot extends JFrame

        {

           private static final long serialVersionUID = 1L;

           public JButton bStart, bPoints, bPoignee, bUnJoueur, bAnnuler;

           CanvasDeJoueur table;    

           public JeuxDeTarot()

           {

              setTitle("Jeux Tarot");

              getContentPane().setLayout(new BorderLayout());

              getContentPane().setBackground(Color.lightGray);

              setSize(250, 80);

              setLocation(10,5);

              setVisible(true);

              table = new CanvasDeJoueur();

              JPanel topPanel = new JPanel(new FlowLayout());

              bStart = new JButton("Nouvelle Partie");

              bPoints = new JButton("Points");

              bPoignee = new JButton("Poignee");

              bUnJoueur = new JButton("Un Joueur");

              bAnnuler = new JButton("Annuler");

              topPanel.add(bStart);

              topPanel.add(bPoints);

              topPanel.add(bPoignee);

              topPanel.add(bUnJoueur);

              topPanel.add(bAnnuler);

              bPoints.setEnabled(false);

              bPoignee.setEnabled(false);

              bUnJoueur.setEnabled(false);

              bAnnuler.setEnabled(false);

              bStart.addActionListener(new ActionListener(){

                 @Override

                 public void actionPerformed(ActionEvent e) {

                    int recommencer = table.creerNouvellePartie();

                    if(recommencer == JOptionPane.YES_OPTION){

                       // ici on a recommence une nouvelle partie donc on peut

                       // activer les boutons

                       bPoints.setEnabled(true);

                       bPoignee.setEnabled(true);

                       bUnJoueur.setEnabled(true);        

                    } else if (recommencer == JOptionPane.CANCEL_OPTION){

                       // ici on a recommence une nouvelle partie mais on n'a pas complete

                       // l'initialisation des joueurs ou la date donc les boutons doivent

                       // etre desactive

                       bPoints.setEnabled(false);

                       bPoignee.setEnabled(false);

                       bUnJoueur.setEnabled(false);        

                       bAnnuler.setEnabled(false);        

                    }

                    // ici, rien ne c'est passe, on a annuler recommencer une nouvelle partie

                    // donc on ne fait rien.

                 }

              });

              bPoints.addActionListener(new ActionListener(){

                 @Override

                 public void actionPerformed(ActionEvent e) {

                    String bouton = bPoints.getActionCommand();

                    String points = (String) JOptionPane.showInputDialog("Joueurs, Points , contrat");

                    table.addTour(points,bouton);

                    // On regarde si on peut annuler une action maintenant. Si oui,

                    // on active le bouton annuler

                    if(table.peutAnnuler()){

                       bAnnuler.setEnabled(true);

                    }

                 }

              });

              bPoignee.addActionListener(new ActionListener(){

                 @Override

                 public void actionPerformed(ActionEvent e) {

                    // TODO Auto-generated method stub

                   String bouton=bPoignee.getActionCommand();

                   String points = (String) JOptionPane.showInputDialog("Joueurs, Points , contrat");

                   table.addPoignee(points,bouton);

                   if(table.peutAnnuler()){

                    bAnnuler.setEnabled(true);

                 }

                 }

              } );

              bUnJoueur.addActionListener(new ActionListener(){

                 @Override

                 public void actionPerformed(ActionEvent e) {

                    // TODO Auto-generated method stub

                    String bouton=bUnJoueur.getActionCommand();

                    String points = (String) JOptionPane.showInputDialog("Joueurs, Points , contrat");

                    table.addUnJoueur(points,bouton);

                    if(table.peutAnnuler()){

                     bAnnuler.setEnabled(true);

                  }

                 }

              } );

              bAnnuler.addActionListener(new ActionListener(){

                 @Override

                 public void actionPerformed(ActionEvent e) {

                    if(table.peutAnnuler()){

                       table.annuler();

                    } else {

                       bAnnuler.setEnabled(false);

                    }

                 }

              } );

              getContentPane().add(topPanel, BorderLayout.NORTH);

              getContentPane().add(table, BorderLayout.CENTER);

              setDefaultCloseOperation(EXIT_ON_CLOSE);

              pack();

           }

        }  

        class TesterClicBoutonsE extends JFrame

        {

           public static void main(String[] args)

           {

              new JeuxDeTarot();    

           }

        }

        Ai-je bien répondu à tes questions ?

        Cordialement

        EJB

        0
        1. Modérateur

          Tout le code est dans le même fichier ?

          Parce que tu as deux classes, la première qui est public et devrait être dans un fichier qui porte le même nom, et la seconde qui contient la méthode main.

          Lorsque tu essaies de démarrer en ligne de commandes tu utilises quel nom de classe ? Et à partir de quel répertoire ?

          Le plus logique serait d'avoir la classe TesterClicBoutonsE (qui n'a pas besoin d'extends JFrame) déclarée public dans son propre fichier et c'est cette classe qu'il faudrait appeler en ligne de commandes.

          javac JeuxDeTarot.java
          javac TesterClicBoutonsE.java
          java TesterClicBoutonsE
          0
      2. Bonsoir

        Je suis absent pour une semaine. Je ferai le test à mon retour;

        Merci pour tes conseils, bonne semaine  toi.

        EJB

        0