我正在学习 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 cmf MyClass.mf MyClass.jar MyClass.class MyClass.java”创建 .JAR 文件,然后尝试使用“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 文件,所以如果这是一个微不足道的问题,我很抱歉。
最佳答案
编译后,您有两个文件 MyClass$MyActLst.class 和 MyClass.class。您必须集成这两个文件。您可以使用“jar cmf MyClass.mf MyClass.jar *.class MyClass.java”
子类在不同的文件中生成。
关于java - 执行简单 jar 文件时出现类未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61407448/