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

时间:2018-07-13 21:26:20

标签: java security web java-web-start

我正在尝试使用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>

如果我使用以下网址:

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

然后我看到一个对话框,其中有“应用程序被Java安全性阻止,您的安全性设置已阻止本地应用程序运行”

因此,然后我将“ file:// desktop-60nl2pl”添加到Chrome中的“受信任的站点”区域,然后取消选中“需要对该区域中的所有站点进行服务器验证(https :)”,然后将网址更改为以下内容:

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

然后弹出一个对话框,提示“无法启动应用程序”。单击“详细信息”按钮将显示“ java.lang.IllegalArgumentException:URI具有权限组件     在java.io.File。(未知来源)     在com.sun.javaws.jnl.XMLFormat.setSourceURL(未知来源) “。

我用一个自签名的crt对罐子进行了签名,但这显然还不够。 我已经阅读了此问题,并且可能的解决方案似乎是现在它需要由受信任的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:这是网页和阻止错误的屏幕截图: enter image description here enter image description here 我单击“打开Java Web启动器”,然后看到此被阻止的错误: enter image description here

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

2 个答案:

答案 0 :(得分:0)

我已经在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>

带有访问应用程序链接的网页:

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

该网页和jnlp文件位于该Web应用程序(部署为WAR文件)的同一文件夹(根目录)中,并且在单击网页上的链接“单击此处启动该应用程序”时,该应用程序将在以下位置启动客户端计算机。

此外,在Windows(7)控制面板->程序-> Java中:这将打开Java控制面板。在安全性选项卡中,有一个复选框“为浏览器和Webstart应用程序启用Java内容”-选中此项。

答案 1 :(得分:0)

解决方案是将以下行添加到“ 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

可能只需要这两个之一。