将Java Applet迁移到Java WebStart(JNLP)

时间:2017-12-15 01:40:21

标签: java applet migration java-web-start jnlp

我要将Java Applet迁移到JNLP作为Java Web Start应用程序启动并遇到一些麻烦/误解......
我得到的资源之一是:6 Migrating Java Applets to Java Web Start and JNLP:

但是让我们开始吧:

目前,该应用程序是一个小应用程序(JApplet),并且在过去通过嵌入带有引用JNLP的applet标记的HTML来启动。

现在,由于所有浏览器都删除了applet支持,我应该将其作为Java Web Start运行。

简单地调用相同的JNLP失败,因为无法加载资源(JAR文件) 这是通过向JNLP文件添加代码库属性来修复的第一步。

Applet正在浏览器之外启动。

但现在困难的部分......我应该/想要摆脱任何applet依赖。

但是怎么样? 什么是正确的方法?
指南并没有真正说明,因此我有一些问题:

  1. 例如:如何替换applet.getAppletContext()的用法及其相关用法?
  2. 指南说我应该在我的“主”applet类中放置一个静态main。但是我该怎么做呢?
  3. 我试过&以不同的方式启动applet,但之后我的applet不再启动了。

    我如何真正取代它? 什么应该是应用程序的正确包装器而不是applet?
    怎么开始呢?

    是否可能有一个更精细的指南/样本/教程可以跟随一个真实的例子?

1 个答案:

答案 0 :(得分:2)

您应用程序的替代包含可以是JFrame 迁移路径将重构(移动)实际UI代码到JPanel中。可以将其放入JApplet或Java WebStart应用程序放入JFrame。 (在那段时间你可以有一个混合应用程序)。

<!-- main in MyApplication -->
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            public void run() {
                JFrame frame = new JFrame();
                frame.setTitle("MyApplication via JWS");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                // add here the real UI to the frame: setUpGUI(frame);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }

<!-- Init() in MyApplication extends JApplet -->

    @Override
    public void init() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                // add here the real UI to the applet: setUpGUI(MyApplication.this);
            }
        });
    }

注意:EventQueue。

根据问题1:
一些Applet规范必须以不同的方式替换 在此处查找基础知识:https://docs.oracle.com/javase/9/deploy/jnlp-api-examples.htm
例如:对于AppletContext,BasicService作为某种替代。