2

非標準アプリケーションを開発しています。基本的には、組み込みの Mozilla ブラウザー (mozilla-interfaces-1.9.2.12.jar、mozilla-glue-1.9.2.12.jar) を使用する SWT アプリケーションであり、アプレットを含む html ページを表示する必要があります (これも私が開発したものです)。これらのアプレットは署名され、証明書はキーストアにインポートされます。標準のスタンドアロン Mozilla ブラウザでアプレットを実行すると、すべてがうまく機能します。

SWT アプリケーションを通常どおりに (つまり、SecurityManager を使用しないスタンドアロンの Java デスクトップ アプリケーションとして) 実行しても、すべて正常に動作します。埋め込みブラウザが表示され、アプレットを含む html ページが表示されます。

しかし、このアプリケーションを Java Web Start (jnlp) で実行しようとするとすぐに問題が発生します。私の jnlp は明確に定義されていると思います。インターネットでの議論で見つけたすべてのタグが含まれています。たとえば、

<security>
     <all-permissions/>
</security> 

など。私のSWTアプリケーション、それぞれ。すべての jar ファイルが署名されています (アプレットに使用されたものと同じ証明書)。正常に起動し、すべてのアクセス許可と署名なしでは許可されない操作を実行し、SWT ウィンドウも表示します (したがって、SWT 自体は正常に動作します) が、組み込みブラウザーを表示する必要があるときに、UnsatisfiedLinkException が発生します。面白いことに、特定の権限セットで .java.policy ファイルを作成すると、正しく動作し、アプレットも動作します。シャーロック・ホームズの役を演じる私は、この一連の許可が含まれていることを理解しました

  java.io.FilePermission 
  java.lang.RuntimePermission 
+ permissions that are neccessary for applets.

それはあなたの誰にとっても意味がありますか?アプリケーション自体が署名されており、jnlp ファイルにタグが存在するという事実を無視する、ある種の特定の SecurityManager で swt mozilla ブラウザが実行されているようです。

アプレットなしでページをロードすると、ブラウザ ウィンドウを表示するには 2 つのアクセス許可が必要です。.java.policy ファイルを使用せず、ユーザー側で追加の設定を行わずに、このアプリケーションを実行したいと考えています。すべてのアドバイスに感謝します。

前もって感謝します。

ボイタ

4

1 に答える 1

0

アプレットを使用したことがないため、同じ問題かどうかはわかりませんが、Webstartを介してバンドルされたxulrunnerを使用してSWT-Browserベースのアプリケーションを実行しようとしたときにも問題が発生しました。

この回避策の1つは、Javaコード内にポリシーを設定することでした(ブラウザーインスタンスを作成する直前...)

Policy.setPolicy(new Policy() {
  public PermissionCollection getPermissions(CodeSource codesource) {
    Permissions perms = new Permissions();
    perms.add(new AllPermission());
    return(perms);
  }
  public void refresh() { }
}

WindowsXPはまだこれでJNLPを実行できなかったことを覚えています。しかし、Windows 7、LinuxおよびMacOSXのいくつかのバージョンは可能でした。

于 2011-04-15T23:35:18.457 に答える