Апплет не запускается из GlassFish, несовместимая магическая ценность.Работает нормально с веб-сервера OS X - PullRequest
1 голос
/ 07 декабря 2010

При программировании я пытаюсь, чтобы сервер GlassFish обслуживал клиентский апплет для связи с сервлетом сервера.Я застрял на том, чтобы GlassFish доставил апплет.Я много об этом искал и не нашел ничего, что решило бы проблему - хотя я немного учусь.

У меня есть апплет 'hello world', скомпилированный в tskApplet.class.

import java.applet.Applet;
import java.awt.*;
public class tskApplet extends Applet {
    public void paint (Graphics g) {
        g.drawString("Hello world! It's an applet!", 5, 25);
    }
}

У меня есть html-страница, которая загружает апплет со следующим тегом апплета:

<applet code = "tskApplet.class" width="300" height="300"></applet>

Я пробовал (но безрезультатно) все виды изменений, такие как установкафайл .class в .jar и включающий archive = "tskApplet.jar" в тег апплета, и используя страницу .jsp и т. д.

Я использую IntelliJ, и если я запускаю tskApplet из апплетаконфигурация запуска / отладки работает нормально.Я следовал этому руководству, чтобы настроить GlassFish с ImtelliJ: http://wiki.jetbrains.net/intellij/Developing_applications_for_GlassFish_Server_in_IntelliJ_IDEA

Если я скопирую один и тот же файл .class и .html из веб-каталога сервера GlassFish в папку «Сайты OS X», то апплет работаетнормально из браузера, когда я получаю к нему доступ таким образом.

Но если я запускаю GlassFish и получаю доступ к своему веб-приложению, апплет не запускается.Вместо этого я получаю следующие ошибки в java-консоли браузера:

java.lang.ClassFormatError: Incompatible magic value 1768779887 in class file tskApplet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:219)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Plugin2ClassLoader.java:249)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:179)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Plugin2ClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:674)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:2990)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1481)
    at java.lang.Thread.run(Thread.java:680)

Есть предложения, где искать дальше?

1 Ответ

1 голос
/ 17 декабря 2010

Похоже, что GlassFish работает с более старой JVM, чем был скомпилирован апплет.Узнайте, какая JVM работает на сервере.

...