【问题标题】:Launch urls based on different versions of java基于不同版本的java启动url
【发布时间】:2013-02-11 09:23:31
【问题描述】:

我需要创建一个简单的启动器,让我也可以选择使用不同版本的 java 启动哪个网址。我研究了几个网站。让用户更改 Windows 设置不是一种选择,因为它会产生过多的支持电话或用户没有权限。我想要的是一种编程方式来设置或更改用于启动 url 的 java 版本。我见过专有系统制作带有 gui 的启动器,允许您更改地址和 java 版本,然后在浏览器中启动它。我是开发新手,显然无法理解使用哪些技术。

请您指出正确的方向。我很擅长编写 guis(在 c# 或 java 中)我只需要知道如何为启动按钮编写函数?

function launchbutton(url, javaversion)

{

If (javaversionselect == 1.3)
{
open url in default browser running java version 1.3
}

If (javaversionselect == 1.4)
{
open url in default browser running java version 1.4
}

If (javaversionselect == 1.5)
{
open url in default browser running java version 1.5
}

If (javaversionselect == 1.6)
{
open url in default browser running java version 1.6}
}

【问题讨论】:

  • 您想以编程方式在“默认”浏览器中打开一个 url 并选择浏览器使用哪个 JVM 来托管小程序?我相当肯定没有这样的事情是可能的。
  • 是否可以使用自定义浏览器?您可以使用不同版本的“便携式 Java”和一些交换魔法来做到这一点。
  • @KirkWoll 我可能没有准确描述这一点,但我见过一个程序,您可以在其中选择一个 url,然后选择 java 版本并单击启动。如果您要手动访问该地址,除非您的系统上有正确版本的 java,否则它不会加载该页面。有没有其他方法可以做到这一点?
  • @VaughanHits 您能否详细说明或链接到文章?

标签: java url cross-browser launcher


【解决方案1】:

您可以编写一个小程序来执行此操作。使用javac -target 1.3:

编译这样的东西
public class Redirector
extends Applet {
    @Override
    public void start() {
        String newURL;

        Package pkg = Object.class.getPackage();
        if (pkg.isCompatibleWith("1.7")) {
            newURL = "java17.html";
        } else if (pkg.isCompatibleWith("1.6")) {
            newURL = "java16.html";
        } else if (pkg.isCompatibleWith("1.5")) {
            newURL = "java15.html";
        } else if (pkg.isCompatibleWith("1.4")) {
            newURL = "java14.html";
        } else {
            newURL = "java13.html";
        }

        try {
            getAppletContext().showDocument(new URL(newURL));
        } catch (MalformedURLException e) {
            showStatus(e.toString());
        }
    }
}

如果你真的想让用户自己选择 Java 版本,你可以在你的小程序中为此创建 UI 元素:

public class Redirector
extends Applet
implements ActionListener {
    private Choice list;

    @Override
    public void init() {
        try {
            EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    list = new Choice();
                    list.add("1.7");
                    list.add("1.6");
                    list.add("1.5");
                    list.add("1.4");
                    list.add("1.3");

                    Button button = new Button("Launch");
                    button.addAtionListener(Redirector.this);

                    add(new Label("Java version:"));
                    add(list);
                    add(button);
                }
            });
        } catch (InvocationTargetException e) {
            throw new RuntimeException(e);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public void actionPeformed(ActionEvent event) {
        String newURL;
        String version = list.getSelectedItem();
        if (version.equals("1.7")) {
            newURL = "java17.html";
        } else if (version.equals("1.6")) {
            newURL = "java16.html";
        } else if (version.equals("1.5")) {
            newURL = "java15.html";
        } else if (version.equals("1.4")) {
            newURL = "java14.html";
        } else {
            newURL = "java13.html";
        }

        try {
            getAppletContext().showDocument(new URL(newURL));
        } catch (MalformedURLException e) {
            showStatus(e.toString());
        }
    }
}

【讨论】:

    【解决方案2】:

    您无法更改应用程序中使用的 Java 版本,例如“IE”或“Chrome”,您唯一的解决方案是使用某种嵌入式浏览器

    • jBrowser
    • 来自 Mozilla 的 XPCOM
    • 浏览源代码并了解 Eclipse 如何嵌入他们的浏览器

    【讨论】:

      【解决方案3】:

      Bare Bones Browser Launcher 将检测 java 版本并使用适当的调用。

      http://www.centerkey.com/java/browser/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-16
        • 1970-01-01
        • 1970-01-01
        • 2023-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多