如何从本地 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
可能只需要这两个之一。
我正在尝试使用 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:这是网页和被阻止的错误截图:
如果我双击 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
可能只需要这两个之一。