2013-09-05 3 views
0

J'ai trois classes. Principal, Core et Start. Voici le code principal:java.lang.NoClassDefFoundError Main (Nom incorrect: com/leslie/quiz/Main)

package com.leslie.quiz; 

    public class Main { 
     public static void main(String[] args) { 
      com.leslie.quiz.Start.main(null); 
     } 
    } 

Voici le code de base:

package com.leslie.quiz; 

    public class Core { 
     public void coldlunch() { 

     } 

     public void hotlunch() { 

     } 
    } 

Voici le code pour le démarrage:

package com.leslie.quiz; 

    import java.awt.EventQueue; 

    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import java.awt.BorderLayout; 
    import javax.swing.JButton; 
    import java.awt.event.MouseAdapter; 
    import java.awt.event.MouseEvent; 

    public class Start { 
     com.leslie.quiz.Core core = new Core(); 
     float opacity = 1; 

     private JFrame frmCafeteriaQuiz; 

/** 
* Launch the application. 
*/ 
     public static void main(String[] args) { 
      EventQueue.invokeLater(new Runnable() { 
       public void run() { 
        try { 
         Start window = new Start(); 
         window.frmCafeteriaQuiz.setVisible(true); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
     } 

/** 
* Create the application. 
*/ 
public Start() { 
    initialize(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 
private void initialize() { 
    frmCafeteriaQuiz = new JFrame(); 
    frmCafeteriaQuiz.setTitle("Cafeteria Quiz"); 
    frmCafeteriaQuiz.setResizable(false); 
    frmCafeteriaQuiz.setBounds(100, 100, 471, 331); 
    frmCafeteriaQuiz.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JLabel lblWelcomeToThe = new JLabel("Welcome to the Cafeteria Quiz! Are you a responsible hawk?"); 
    frmCafeteriaQuiz.getContentPane().add(lblWelcomeToThe, BorderLayout.NORTH); 

    JButton btnIHaveCold = new JButton("I have Cold Lunch"); 
    btnIHaveCold.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent arg0) { 
      core.coldlunch(); 
     } 
    }); 
    frmCafeteriaQuiz.getContentPane().add(btnIHaveCold, BorderLayout.WEST); 

    JButton btnIHaveHot = new JButton("I have Hot Lunch"); 
    btnIHaveHot.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 
      core.hotlunch(); 
       } 
      }); 
    frmCafeteriaQuiz.getContentPane().add(btnIHaveHot, BorderLayout.EAST); 
      } 

    } 

Je suis en cours d'exécution cmd, et changer le répertoire au paquet où toutes mes classes sont. Quand je cours principal en tapant « java principal » Je reçois

java.lang.NoClassDefFoundError Main (Wrong Name : com/leslie/quiz/Main)

Une chose que j'ai lu est que le problème pourrait être dû à l'appel de la classe à l'intérieur du paquet? Ce n'était pas très détaillé et quand j'ai lancé le programme dans le dossier principal des programmes, il a fait la même chose. Si je lance le programme en éclipse, cela fonctionne très bien et ne montre aucune erreur. Et je suis conscient que eclipse utilise un compilateur différent. Mais rien que j'ai essayé fonctionne. Toute aide est la bienvenue. Merci. :)

+0

cela se produit généralement si vous référencez une bibliothèque externe mais que vous ne l'ajoutez pas au chemin de construction – sha256

+0

Il vaudra mieux afficher la pile, c'est-à-dire le message * java.lang.ClassNotFoundError: some.package.which.TheClassNotFound *. –

+1

Exécutez-vous ceci à partir de la ligne de commande? Si oui, veuillez fournir vos commandes pour compiler/exécuter votre programme. Je parie que vous n'êtes pas en cours d'exécution à partir du répertoire racine du package ou que vous ne définissez pas le chemin de classe correctement. – Asaph

Répondre

3

Depuis votre Main classe est dans le paquet com.leslie.quiz, vous devez aller dans le répertoire parent de la sortie compilé et exécutez la commande:

java com.leslie.quiz.Main 

Notez que le répertoire de sortie binaire par défaut dans Eclipse est un le répertoire bin du projet. Bien qu'il soit masqué dans la vue Explorateur de packages dans Eclipse, il existera toujours sur le système de fichiers. Vous devriez pouvoir le voir depuis la vue Navigateur dans Eclipse.

Le contenu de bin ressemblera à quelque chose comme ceci:

bin/ 
    com/ 
    leslie/ 
     quiz/ 
     Core.class 
     Main.class 
     Start.class 

Dans ce cas, cd à bin et exécutez la commande java.

Questions connexes