2013-09-05 4 views
0

У меня есть три класса. Main, Core и Start. Вот код Main:java.lang.NoClassDefFoundError Главная (Неверное имя: com/leslie/quiz/Main)

package com.leslie.quiz; 

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

Вот код для Ядра:

package com.leslie.quiz; 

    public class Core { 
     public void coldlunch() { 

     } 

     public void hotlunch() { 

     } 
    } 

Вот код для запуска:

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); 
      } 

    } 

Я бегу ЦМД, и изменения каталога в пакет, где все мои классы. Когда я бегу Главное, набрав «Java Main» Я получаю

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

Одна вещь, которую я прочитал, что эта проблема может быть вызвана вызовом класса внутри пакета? Это было не очень подробно, и когда я запускал программу из основной папки программы, она делала то же самое. Если я запускаю программу в eclipse, она отлично работает и не показывает ошибок. И я знаю, что eclipse использует другой компилятор. Но я ничего не пробовал. Любая помощь будет большой. Благодарю. :)

+0

Это обычно происходит, если вы ссылаетесь на внешнюю библиотеку, но не добавляете ее в путь сборки. – sha256

+0

Лучше будет отображать stacktrace, то есть это сообщение: java.lang.ClassNotFoundError: some.package.which.TheClassNotFound *. –

+1

Вы используете это из командной строки? Если да, просьба указать вашу команду (ы) для компиляции/запуска вашей программы. Я уверен, что вы либо не работаете из корневого каталога пакета, либо не задаете правильный путь к классам. – Asaph

ответ

3

Поскольку ваш Main класс находится в пакете com.leslie.quiz, вы должны перейдите в родительский каталог скомпилированного вывода и выполнить команду:

java com.leslie.quiz.Main 

Обратите внимание, что директория по умолчанию двоичный выход в Eclipse, является каталог проекта bin. Хотя он скрыт от представления Package Explorer в Eclipse, он все равно будет существовать в файловой системе. Вы должны увидеть его в представлении Navigator в Eclipse.

Содержимое bin будет выглядеть примерно так:

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

В этом случае, CD в bin и выполнить команду java.

Смежные вопросы