Я изучаю Java и пытаюсь создать очень простую программу с Swing. Я использую инструменты командной строки java.
У меня есть один файл java с таким содержимым:
import javax.swing.*;
import java.awt.*;
public class MyClass {
public static class MyActLst implements java.awt.event.ActionListener {
public void actionPerformed(java.awt.event.ActionEvent e)
{
System.out.println("Action occured.\n");
}
}
public static void main(String[] args) {
JFrame f = new JFrame("Example");
f.setSize(640,480);
f.setLayout(null);
JButton b = new JButton("OK");
b.setBounds(0,0,100,100);
b.setText("Test");
MyActLst myActLst = new MyActLst();
b.addActionListener(myActLst);
f.add(b);
f.setVisible(true);
}
}
Имя файла - MyClass. java. Когда я компилирую это, используя «javac MyClass. java», а затем запускаю с «java MyClass», это работает. Однако, когда я пытаюсь создать файл .JAR, используя «jar cmf MyClass.mf MyClass.jar MyClass.class MyClass. java», а затем пытаюсь выполнить его, используя «java -jar MyClass.jar», я получить сообщение об ошибке:
Exception in thread "main" java.lang.noClassDefFoundError: MyClass$MyActLst
at MyClass.main(MyClass.java:25)[...]
Кажется, что внутренний класс MyActLst не был найден. Что меня удивляет, так это то, что он обнаруживается, когда я просто сам компилирую файл. java.
MyClass.mf выглядит так:
Manifest-Version: 1.0
Main-Class: MyClass
Это моя первая попытка создайте файл .jar, так что извините, если это тривиальный вопрос.