Class执行一个简单的jar文件时找不到错误
Class not found Error when executing a simple jar file
我正在学习 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)[...]
似乎没有找到内部 class 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 并尝试使用 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)[...]
似乎没有找到内部 class 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"
子类在不同的文件中生成。