実行可能な Jar の制限

Spring Boot Loader パッケージアプリケーションを使用するときは、次の制限を考慮する必要があります。

  • Zip エントリ圧縮: ネストされた jar の ZipEntry は、ZipEntry.STORED メソッドを使用して保存する必要があります。これは、ネストされた jar 内の個々のコンテンツを直接検索できるようにするために必要です。ネストされた jar ファイル自体の内容は、外側の jar の他のエントリと同様に圧縮できます。

  • システムクラスローダー: 起動されたアプリケーションは、クラスをロードするときに Thread.getContextClassLoader() を使用する必要があります(ほとんどのライブラリとフレームワークはデフォルトでそうします)。ClassLoader.getSystemClassLoader() でネストされた jar クラスをロードしようとすると失敗します。java.util.Logging は常にシステムクラスローダーを使用します。このため、異なるロギング実装を検討する必要があります。