我正在尝试使用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>
答案 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
可能只需要这两个之一。