3

私がJavaで働いてから何年も経ちます(それが私の言い訳です)。

Java Swing UI をアプレットとして起動しようとしています (以前は Web Start 経由で実行していました)。

jnlp ファイルを変更して、アプレットに必要な変更を反映させました (たとえば、application-desc の代わりに applet-desc を使用)。

<resources>jnlp ファイルのタグ内で、システム プロパティを次のように設定します。

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

メイン クラスの init メソッドでは、これらのシステム プロパティの一部を読み取ろうとし、値として常に「null」を取得します。

  1. システムのプロパティが「固定」されていない理由を知っている人はいますか?

  2. おそらく関連する奇妙さ:何かが実行されたときにコンソールを開くようにJavaを設定しています。このアプレットを使用してページをロードすると、コンソール ウィンドウが 2 回開き、両方のウィンドウに jnlp のロードの詳細が表示されますが、完全なアプリのロードを続行するウィンドウは 1 つだけです。

アップデート:

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 日間を費やし、jar やその他のファイルに署名しようとしました...そして、非常にシンプルで正常に動作する解決策を見つけました。

*次の内容の jndi.properties ファイルを JRE-home-director *y (jre7/lib) に配置します。

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 に答える