Для школы мы изучаем файлы .jar и способы их создания. Ниже у меня есть код для простого компонента GUI и Viewer.NoClassDefFoundError возникает при запуске файла .jar
package mp6;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
public class HelloComponent extends JComponent
{
public void draw(Graphics2D g2)
{
g2.setFont(new Font("Arial", Font.ITALIC, 48));
g2.setColor(Color.red);
g2.drawString("Hello ", 40, 150);
g2.setColor(Color.green);
g2.drawString("Coloured ", 165, 150);
g2.setColor(Color.blue);
g2.drawString("JAR File", 380, 150);
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
draw(g2);
}
}
Viewer:
package mp6
import javax.swing.JFrame;
public class HelloViewer {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
final int FRAME_WIDTH = 600;
final int FRAME_HEIGHT = 300;
HelloComponent comp = new HelloComponent();
JFrame frame = new JFrame();
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("Hello World in Colour");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(comp);
frame.setVisible(true);
}
}
После использования командной строки для компиляции в файлы .class, я использовал команду
jar cfe Hello.jar HelloViewer HelloViewer.class HelloComponent.class
Для упражнения мы обязаны использовать -e для установки точки входа. Это создает файл .jar с именем Hello.jar. Если запустить двойной щелчок на .jar, возникает исключение Java. При запуске через командную строку отображается ошибка
"Exception in thread main java.lang.NoClassDefFoundError: HelloViewer (wrong name: mp6/HelloViewer)".
В чем причина этой ошибки? Я использовал правильную команду для создания .jar?