【问题标题】:Get java applet to run in browser using jnlp使用 jnlp 让 java 小程序在浏览器中运行
【发布时间】:2012-05-10 11:06:37
【问题描述】:

我有一个非常简单的 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");
        }
    }
}

当我右键单击并执行Run As > Java Applet 时,我可以让小程序在 Eclipse 中运行,但现在我试图将它放入一个 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

【问题讨论】:

    标签: java applet jnlp next-generation-plugin unsupported-class-version


    【解决方案1】:

    代码显然是由 1.7 SDK 编译的,没有使用任何 cross-compilation options,而试图加载它的 JRE 版本是 6 或更低。

    要为特定的 Java 版本编译代码,请使用交叉编译选项。要正确执行此操作,需要目标版本的rt.jar(使用javacbootclasspath 选项)。

    【讨论】:

    • 就是这样!我能够使用以下命令重新编译代码:javac -source 1.6 -target 1.6 -bootclasspath "C:\Program Files\Java\jdk1.7.0_03\jre\lib\rt.jar" -d build HelloClass.java,现在效果很好。我按照您在此处链接到的页面上的示例进行操作:Crosscompile-example
    【解决方案2】:

    编译器版本和JRE版本不匹配,请确保它们是相同的(主要)版本。

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2017-05-29
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      相关资源
      最近更新 更多