我有一个Java Web Start应用程序,该应用程序通过.jnlp文件获取一些参数,进行一些分析,然后将结果上传回服务器。只要我使用
从NetBeans运行它,它就可以正常工作在“虚拟机选项”区域中单击-Dcom.sun.security.enableAIAcaIssuers = true
。
但是从这样运行的网页上运行时不起作用:
deployJava.launchWebStartApplication('jws/CreoDimExtractor.jnlp');
它成功运行,直到到达上载部分,然后失败,并显示
“ javax.ws.rs.ProcessingException:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法执行 找到到所请求目标的有效认证路径”
在我的.jnlp文件中,我包括了这样的JVM选项:
<resources>
<!-- Application Resources -->
<j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-Dcom.sun.security.enableAIAcaIssuers=true"/>
<jar href="En360_SFtp.jar" main="true" />
</resources>
我将安全性设置为:
<security><all-permissions/></security>
我读过here
“还可以根据需要通过添加前缀来定义新的安全属性。 属性名称为“ jnlp”。或“ javaws”。”
所以我也尝试过
<resources>
<!-- Application Resources -->
<j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-Djnlp.com.sun.security.enableAIAcaIssuers=true"/>
<jar href="En360_SFtp.jar" main="true" />
</resources>
他们俩都没有工作。我也读过
property元素定义将可用的系统属性 通过System.getProperty和System.setProperties方法。它 有两个必填属性:名称和值。
因此,在我的Java Web Start应用程序中,我包括了以下几行:
ProcessBuilder pb = new ProcessBuilder(params);
Map<String, String> env = pb.environment();
env.put("com.sun.security.enableAIAcaIssuers","true");
但是那也不起作用。我没主意了。有帮助吗?