3

自从我使用 Java 工作以来已经有好几年了(这是我的借口)。

我正在尝试将 Java Swing UI 作为 Applet 启动(之前通过 Web Start 完成)。

我已经修改了 jnlp 文件以反映我所知道的对 applet 所必需的更改(例如,使用 applet-desc 而不是 application-desc)。

在 jnlp 文件的<resources>标签内,我们设置系统属性如下:

<property name="java.security.auth.login.config" value="$$context/app/auth.conf"/>

在主类的 init 方法中,我们尝试读取其中一些系统属性,并始终将“null”作为值。

  1. 有谁知道为什么系统属性没有“粘住”?

  2. 可能相关的奇怪之处:我将 Java 设置为在运行时打开控制台。当我用这个小程序加载页面时,控制台窗口打开两次,两个窗口都显示了加载 jnlp 的详细信息,但只有一个窗口继续加载完整的应用程序。

更新:

这是jnlp文件:

 <?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" >
  <information>
    <title>app</title>
    <offline-allowed/>
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
      <j2se version="1.6+" java-vm-args="-Xms128m -Xmx1024m -Xss1m"/>
      <property name="java.naming.factory.initial" value="org.jboss.naming.HttpNamingContextFactory"/>
      <property name="java.naming.factory.url.pkgs" value="org.jboss.naming:org.jnp.interfaces"/>
      <property name="java.naming.provider.url" value="$$context/invoker/JNDIFactory"/>
      <property name="java.security.policy" value="$$context/app/server.policy"/>
      <property name="java.security.auth.login.config" value="$$context/app/auth.conf"/>
      <property name="login.context" value="client-login"/>
      <property name="jndi.port" value="1099"/>
      <property name="service.impl" value="Remote"/>
      <property name="polling" value="true"/>
      <jar href="cglib-2.1.3.jar"/>
      <jar href="com.jdas.apps.binmgmt.gui.jar" main="true"/>
      <jar href="commons-beanutils.jar"/>
      <jar href="commons-collections-2.1.1.jar"/>
      <jar href="commons-javaflow.jar"/>
      <jar href="commons-lang.jar"/>
      <jar href="commons-logging.jar"/>
      <jar href="ecs-1.4.1.jar"/>
      <jar href="hibernate3.jar"/>
      <jar href="itext-1.01.jar"/>
      <jar href="jade-5.2.3_AGRIS_PATCH.jar"/>
      <jar href="jbossall-client.jar"/>
      <jar href="jboss-j2ee.jar"/>
      <jar href="jcalendar-1.1.4-agris.jar"/>
      <jar href="jhall-3.1.3.jar"/>
      <jar href="looks-all-1.1.jar"/>
      <jar href="odmg-3.0.jar"/>
      <jar href="pvjdbc2.jar"/>
      <jar href="swing-layout-1.0.jar"/>
      <extension name="additional" href="unsigned.jnlp"/>
  </resources>
  <applet-desc main-class="com.jdas.apps.binmgmt.gui.main.BinManagementApp" name="binMgmt" width="1024" height="768" >

  </applet-desc>
</jnlp>
4

2 回答 2

4

您将需要签署 JNLP 文件以设置系统属性(那些具有特殊豁免的属性除外)。查看您尝试设置的一些属性!

要签署 JNLP 文件,请在签署 jar 之前在 JNLP-INF/APPLICATION.JNLP 中逐个字节地复制(最好坚持使用 US-ASCII(!))。

于 2011-05-04T19:16:56.343 回答
2

刚刚花了 2 天时间试图解决这个问题,尝试签署 jars 和其他文件......然后我发现解决方案似乎非常简单并且工作正常:

我 *在我的 JRE-home-director *y (jre7/lib)中放置了一个包含以下内容的 jndi.properties 文件:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://localhost:1099

从 Java 1.6 更新到 Java 1.7 时我遇到了这个问题...

于 2014-03-18T08:03:15.557 回答