Как сделать приложение Frame / Applet в jar-файле? - PullRequest
1 голос
/ 15 января 2012

У меня есть пример кода App.java:

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

public class App extends JApplet
{
    public void init()
    {       
        getContentPane().add(new JLabel("App"));
    }   

    public static void main(String[] args)
    {
        JApplet aplet = new App();
        JFrame frame = new JFrame("App");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(aplet);
        frame.setSize(300,300);
        aplet.init();
        aplet.start();
        frame.setResizable(false);              
        frame.setVisible(true);
    }
}

Я компилирую это с помощью compile.bat:

@echo off
cls
del *.jar
javac *.java
jar cfe App.jar App *.class
del *.class

Когда я дважды щелкаю на App.jar, я вижу рамку с текстом. Это то, что я хотел.

Как я могу также отобразить это на HTML-странице?

Я пробую код ниже, и он не работает:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>App</title>
</head>
<body>
<center>
<h1>App</h1>
<applet codebase="classes" code="App.class" archive="App.jar
    width="300" height="300" " />
</center>
</body>
</html>

На странице показано Error. Click for details. Когда я нажимаю, я вижу:

load: class App.class not found.
java.lang.ClassNotFoundException: App.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassNotFoundException: App.class

Когда я публикую App.class на html, все работает. Я не могу опубликовать App.jar. Как это сделать, чтобы он работал как в виде апплета, так и в качестве фрейма?

1 Ответ

1 голос
/ 15 января 2012

Я только что удалил codebase="classes" из html и все работает :).

...