如何从本地 html 文件 Java Web 启动?

How to Java Web Start from a local html file?

我正在尝试使用 Java Web Start 从本地网页启动 java 应用程序,但出现安全错误。这是 jnlp 文件:

<jnlp spec="1.0+" 
      href="dynamictree_webstart_no_codebase.jnlp">
    <information>
        <title>Dynamic Tree Demo No Codebase</title>
        <vendor>Dynamic Team</vendor>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.7+"
              href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="DynamicTreeDemo.jar" main="true" />
    </resources>
    <security>
        <all-permissions/>
    </security>    
    <application-desc
         name="Dynamic Tree Demo Application"
         main-class="webstartComponentArch.DynamicTreeApplication">
     </application-desc>
     <update check="background"/>
</jnlp>

如果我使用以下 url:

file:///C:/Users/Greg/Desktop/JavaWebStartExamples/webstart_ComponentArch_DynamicTreeDemo/src/JavaWebStartAppPage_No_Codebase.html

然后我得到一个对话框 "Application Blocked by Java Security, Your security settings have blocked a local application from running"

然后我将 "file://desktop-60nl2pl" 添加到 Chrome 中的可信站点区域并取消选中 "Require server verification (https:) for all sites in this zone" 并将 url 更改为以下内容:

"file://desktop-60nl2pl/Users/Greg/Desktop/JavaWebStartExamples/webstart_ComponentArch_DynamicTreeDemo/src/JavaWebStartAppPage_No_Codebase.html"

然后弹出一个对话框说 "Unable to launch the application." 单击详细信息按钮显示“java.lang.IllegalArgumentException:URI 有一个授权组件 在 java.io.File。(未知来源) 在 com.sun.javaws.jnl.XMLFormat.setSourceURL(来源不明) ".

我已经用 self-signed crt 对 jar 进行了签名,但这显然还不够。 我已经阅读了这个问题,一个可能的解决方案似乎是现在它需要由受信任的 CA 证书签名。真的吗?只是为了在我的本地计算机上进行测试?当然还有另一种方法?

EDIT1:按要求添加 html 代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en-US">
  <head>
    <title>Dynamic Tree Java Web Start Application - Deployed Without Codebase</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  </head>
  <body>
    <h1>Dynamic Tree Java Web Start Application Demo - Deployed Without Codebase </h1>

    <script src="https://www.java.com/js/deployJava.js"></script>    

    <h2>Java Web Start application deployed by using the <code>launchWebStartApplication</code> function</h2>

    <p><a href="javascript:deployJava.launchWebStartApplication('dynamictree_webstart_no_codebase.jnlp');">Launch Dynamic Tree Demo application</a></p>

    <br/>
    <hr/>
    <br/>

    <h2>Java Web Start application deployed by using the <code>createWebStartLaunchButtonEx</code> function</h2>    

    <script>        
        var jnlpFile = "dynamictree_webstart_no_codebase.jnlp";
        deployJava.createWebStartLaunchButtonEx(jnlpFile);
    </script>
    <noscript>JavaScript is required for this page.</noscript>

  </body>
</html>

EDIT2:这是网页和被阻止的错误截图: 我单击打开 Java Web 启动器,然后看到这个被阻止的错误:

如果我双击 DynamicTreeDemo.jar,应用程序运行正常。我只是不会从网页启动。

我已经在 Apache Tomcat 网络服务器上部署了 Java Swing 应用程序(打包为可执行 jar 文件)并使用 Java WebStart 从网页;这是一些细节。 JNLP文件和网页描述分别为:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://www.thewebapp.com/"
        href="http://www.thewebapp.com/theapp-webstart.jnlp">
    <information>
        <title>The Application</title>
        <vendor>A Team</vendor>
    </information>
    <resources>
        <java version="1.7+"/>
        <jar href="theapp.jar" main="true" />
    </resources>
    <application-desc
        name="The Application"
        main-class="TheApp">
    </application-desc>
</jnlp>

用于访问应用程序的 link 网页:

<a href="theapp-webstart.jnlp">Click here to start the app</a>

网页和 jnlp 文件位于 Web 应用程序的同一文件夹(根目录)中(其部署为 WAR 文件),点击网页上的 link "Click here to start the app" 应用程序在客户端计算机上启动。

此外,在 Windows (7) 控制面板 -> 程序 -> Java 中:这会打开 Java 控制面板。在安全选项卡中有一个复选框 "Enable Java content for browser and webstart applications" - 勾选这个。

解决方案是在 Java 控制面板的安全选项卡中的例外站点列表中添加以下行:

file:///C:/Users/Greg/Projects/Enventive/En360_UI/WebContent/DynamicTreeDemo.jar
file:///C:/Users/Greg/Projects/Enventive/En360_UI/WebContent/dynamictree_webstart_no_codebase.jnlp

可能只需要这两个之一。