2016-12-17 3 views
0

Вот мой код,Ошибка: Не удалось найти или загрузить основной класс FrameDemo?

package components; 

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

/* FrameDemo.java requires no other files. */ 
public class FrameDemo { 
/** 
* Create the GUI and show it. For thread safety, 
* this method should be invoked from the 
* event-dispatching thread. 
*/ 
private static void createAndShowGUI() { 
    //Create and set up the window. 
    JFrame frame = new JFrame("FrameDemo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JLabel emptyLabel = new JLabel(""); 
    emptyLabel.setPreferredSize(new Dimension(175, 100)); 
    frame.getContentPane().add(emptyLabel, BorderLayout.CENTER); 

    //Display the window. 
    frame.pack(); 
    frame.setVisible(true); 
} 

public static void main(String[] args) { 
    //Schedule a job for the event-dispatching thread: 
    //creating and showing this application's GUI. 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 
} 

Я скопировал это с сайта оракула с копированием и вставкой дословно. Here

И вот что я делаю в командной строке? В чем проблема? Я серьезно отношусь к моему концу.

Directory of C:\Users\headgearxthree\Desktop\SCRAP\JAVA\compile\gui 

12/17/2016 12:42 PM <DIR>   . 
12/17/2016 12:42 PM <DIR>   .. 
12/17/2016 12:29 PM    2,765 FrameDemo.java 
      1 File(s)   2,765 bytes 
      2 Dir(s) 51,945,787,392 bytes free 

C:\Users\headgearxthree\Desktop\SCRAP\JAVA\compile\gui>javac Framedemo.java 

C:\Users\headgearxthree\Desktop\SCRAP\JAVA\compile\gui>java -cp . FrameDemo 
Error: Could not find or load main class FrameDemo 

C:\Users\headgearxthree\Desktop\SCRAP\JAVA\compile\gui> 

Я сделал Hello World! программа непосредственно в родительском каталоге без проблем. Что это за ошибка? Что происходит не так? Эти примеры должны быть простыми и красноречивыми. Это простой способ, и все же, как только графика задействована, все программирование на окнах переходит в sh * t. WTF? Это не дубликат. Все подобные опрошенные ссылки указывают на конкретный пример. Я сформулировал это не в партизанском стиле, так что это может помочь многим. Пожалуйста, не блокируйте.

ответ

0

Класс находится в пакете components Это означает, что

  • его полное имя components.FrameDemo, не FrameDemo.
  • его исходный файл должен находиться в каталоге с именем components: структура каталогов должна соответствовать структуре пакетов.

Также неплохо смешивать исходные файлы и файлы классов в одном каталоге. Вы должны поместить свои источники под каталогом Src и классы в рамках отдельного каталога классов:

mkdir src 
mkdir classes 
mkdir src/components 
mv FrameDemo.java src/components 
javac -d classes src/components/FrameDemo.java 
java -cp classes components.FrameDemo 

Обратите внимание, что, если вы прочитал учебник правильно и загрузили весь почтовый файл проекта из https://docs.oracle.com/javase/tutorial/uiswing/examples/components/, вы имеете право структура с самого начала.

+0

что делает сегмент классов делать? –

+0

Этот стиль java - это боль. Спасибо хоть. –

0

Неверное имя файла java при компиляции.

Javac Framedemo.java

это должно быть

Javac FrameDemo.java

+0

Собственно. Я просто запустил del * .class и снова просмотрел его, и это не имело значения. Но вы правы. –

+0

Просто получил это, чтобы работать, и это не имело значения! –

+0

После исправления и запуска его вы должны получать NoClassDefFoundError из-за вещи пакета, как упомянуто @JB Nizet в его ответе –

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