Получите java-апплет для запуска в браузере с помощью jnlp

У меня есть очень простой Java-апплет, который я взял отсюда: http://docs.oracle.com/javase/tutorial/deployment/applet/subclass.html

import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;

public class HelloWorld extends JApplet {
    //Called when this applet is loaded into the browser.
    public void init() {
        //Execute a job on the event-dispatching thread; creating this applet's GUI.
        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    JLabel lbl = new JLabel("Hello World");
                    add(lbl);
                }
            });
        } catch (Exception e) {
            System.err.println("createGUI didn't complete successfully");
        }
    }
}

Я могу запустить апплет в eclipse, когда щелкаю правой кнопкой мыши и делаю Run As > Java Applet, но теперь я пытаюсь поместить его в файл jar и запустить с помощью jnlp через браузер. Вот шаги, которые я предпринял, чтобы попытаться сделать это:

  1. javac -d build HelloClass.java
  2. cd build
  3. jar cvf Hello.jar *.class
  4. Создайте файл Hello.jnlp:
    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" codebase="" href="">
        <information>
            <title>Hello Applet</title>
            <vendor>Self</vendor>
        </information>
        <resources>
            <!-- Application Resources -->
            <j2se version="1.6+"
                href="http://java.sun.com/products/autodl/j2se" />
            <jar href="Hello.jar" main="true" />

        </resources>
        <applet-desc 
             name="Hello Applet"
             main-class="HelloClass"
             width="300"
             height="300">
        </applet-desc>
        <update check="background"/>
    </jnlp>
  1. Создать html-страницу:
    <html>
    <head>
    <title>Hello Applet</title>
    </head>
    <body>
        <!-- ... -->
        <script src="http://www.java.com/js/deployJava.js"></script>
        <script> 
            var attributes = {
                code:'HelloClass',  width:300, height:300} ; 
            var parameters = {jnlp_href: 'Hello.jnlp'} ; 
            deployJava.runApplet(attributes, parameters, '1.6'); 
        </script>
        <!-- ... -->
    </body>
    </html>

Когда я открываю эту страницу в своем браузере, мне предлагается разрешить запуск апплета, но затем я получаю сообщение об ошибке со следующими данными:

Exception: java.lang.UnsupportedClassVersionError: HelloClass : Unsupported major.minor version 51.0

person nates    schedule 30.04.2012    source источник


Ответы (2)


Код, по-видимому, был скомпилирован SDK версии 1.7 без использования каких-либо параметры кросс-компиляции, а JRE, которая пытается его загрузить, имеет версию 6 или ниже.

Чтобы скомпилировать код для конкретной версии Java, используйте параметры кросс-компиляции. Чтобы сделать это правильно, потребуется rt.jar целевой версии (для использования опции bootclasspath javac).

person Andrew Thompson    schedule 30.04.2012
comment
Вот оно! Я смог перекомпилировать код с помощью этой команды: javac -source 1.6 -target 1.6 -bootclasspath "C:\Program Files\Java\jdk1.7.0_03\jre\lib\rt.jar" -d build HelloClass.java и теперь он отлично работает. Я следовал примеру на странице, на которую вы ссылаетесь здесь: Пример кросс-компиляции - person nates; 01.05.2012

Существует несоответствие между версией компилятора и версией JRE, убедитесь, что они имеют одну и ту же (основную) версию.

person MByD    schedule 30.04.2012