Java 网络启动:使用 <extension> 时忽略 <property …>?
-
13-09-2019 - |
题
我在 Java 6 u 13(目前最新)下现代化 Java WebStart 应用程序时遇到问题
我们希望使用新机制来拥有多个主配置文件,每个主配置文件都有自己的配置,然后“包含”另一个自动生成的 jnlp 文件,以确保 jar 列表的准确性。经过相当多的尝试后,我已经使它工作了,除了调用 Main 时程序无法使用主文件中定义的属性这一事实之外。
主 JNLP 看起来像(匿名):
<jnlp>
<information>
<title>...</title>
<vendor>...</vendor>
<description>...</description>
<description kind="short">...</description>
<homepage href="http://....jnlp"/>
<icon href="http://....gif"/>
<!-- <offline-allowed/> -->
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+"/>
<extension href="http://...extension.jnlp" />
<property name="server.name" value="SERVER"/>
</resources>
<application-desc main-class="Main"/>
</jnlp>
扩展名.jnlp 如下所示:
<!-- Generated automatically. Do not edit! -->
<jnlp>
<information>
<title>extension built 2009-04-22 12:39:58 CEST</title>
<vendor>...</vendor>
</information>
<security><all-permissions/></security>
<resources>
<jar href="A.jar" />
<jar href="B.jar" />
<jar href="logback-classic-0.9.14.jar" />
<jar href="logback-core-0.9.14.jar" />
<jar href="slf4j-api-1.5.6.jar" />
</resources>
<component-desc />
</jnlp>
我也尝试将属性放入extension.jnlp 中。没有帮助。根据Java Plugin Console中的日志,JVM被重用并且没有重新启动。
有什么建议么?
解决方案 2
从实验我发现,在扩展文件定义的属性是下比主jnlp文件里的要更严格的规则,以及那些不符合规则丢弃。
其他提示
我也遇到了同样的问题。
当我搬家时 <property>
元素到扩展 jnlp 然后它可用于应用程序使用 System.getProperty()
.
但这对我来说不是一个解决方案,因为我想要扩展 jnlp 以及 mastet jnlp 中定义的所有 jar 和属性。
看起来,
对于不受信任的应用程序,JNLP 文件中设置的系统属性只有在被认为是安全的情况下才会由 Java Web Start 设置。
如果想将自己的属性传递给虚拟机,那么它们的名称必须以 javaws.
或者 jnlp.
. 。此类属性被认为是安全的。这 <property>
元素必须包含 value
属性,例如
<property name="jnlp.my.property" value="a value" />
链接:
不隶属于 StackOverflow