由于 Java 7u40 中的最后一次安全更改,因此需要对 JNLP 文件进行签名。这可以通过在JNLP-INF/APPLICATION.JNLP中添加最终的 JNLP 来完成,或者通过在签名的主 jar中的JNLP-INF/APPLICATION_TEMPLATE.JNLP中提供模板 JNLP 来完成。
第一种方法效果很好,但我们希望允许将以前未知数量的运行时参数传递给我们的应用程序。
因此,我们的 APPLICATION_TEMPLATE.JNLP 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="*">
<information>
<title>...</title>
<vendor>...</vendor>
<description>...</description>
<offline-allowed />
</information>
<security>
<all-permissions/>
</security>
<resources>
<java version="1.7+" href="http://java.sun.com/products/autodl/j2se" />
<jar href="launcher/launcher.jar" main="true"/>
<property name="jnlp...." value="*" />
<property name="jnlp..." value="*" />
</resources>
<application-desc main-class="...">
*
</application-desc>
</jnlp>
问题是application-desc标记中的 * 。
可以使用多个参数标记来通配固定数量的参数(参见下面的代码),但是不可能为应用程序提供更多或更少的参数(Java Webstart 不会以空参数标记开始)。
<application-desc main-class="...">
<argument>*</argument>
<argument>*</argument>
<argument>*</argument>
</application-desc>
是否有人可以确认这个问题和/或有解决方案将以前未定义数量的运行时参数传递给 Java 应用程序?
非常感谢!