2

jar ファイルに署名したときに追加したマニフェスト ファイルに関連する問題があります。

アプリケーション ベンダーから提供された一連の jar ファイルがあります。実際の機能 (ボタン、画面など) のためにこれの上に書くクラスがあります。jar ファイルは、次のようなサーバーでアクセスできます...

http://<myservername>/<folderame>/myjar.jar

そして、このフォルダーのルートには、私のクラスに対応する一連のフォルダーがあります (.com.company.app.mylist.list などは /com/company/app/mylist/list.class に対応します)。

ファイルはそこにあり、すべてが何年も正常に機能しています。昨年、Java が署名のないコードを使用することに非常に悩まされたとき (私が使用する 7 つの jar ファイルのうち 3 つは署名がありません) キューに入れました。ドメイン CA からのコード署名証明書を使用して、署名に成功しました。

そこで、署名プロセスの一環として、 jar umfコマンドを使用して変更をマニフェストファイルにインポートするスクリプトを作成しました。これにより、次の 3 行がマニフェスト ファイルにインポートされます...

Permissions: all-permissions
Trusted-Library: true
Codebase: http://<servername>/<foldername>/

これらの 3 行を追加すると、セキュリティの問題やプロンプトなしでアプリを起動できました。ただし、アプリを起動してログインした後、探している画面を表示するには追加のクラスが必要です。そのとき、Java コンソールに次のエラー メッセージが表示されます...実際には画面に何も表示されません。

java.lang.ClassNotFoundException: com.<company>.<app>.inhouse.ispecs.FIRUPIspecModel

クラスFIRUPIspecModelが、言及されているフォルダーに存在することを確認できます。前述したように、元の .jar ファイルをそのままにしておくと、すべてが正常に機能します (Java の次のバージョンでファイルが実行されないようにする一連の煩わしいセキュリティ プロンプトが表示されるだけです)。

ここで、奇妙な点として、3 行目 (コードベース) を削除すると、ログインして、ルート ディレクトリの下にある .class として存在する画面を呼び出すことができます。ただし、私のバージョンの Java (7r40) では、署名付き/未署名のコードが含まれているというセキュリティ エラーが発生します。このプロンプトはバイパスできず、Java は将来のバージョンの Java では実行できないと言っています。

それで、私の質問です。マニフェスト ファイルでcodebaseパラメーターを定義すると、実際にそれが作成され、コードを呼び出すことができない理由がわかりません。コードはそこにあり、コードベースで定義したディレクトリの下にあります。だから、それは信頼されるべきです。

洞察はありますか?

4

0 に答える 0