実行可能な Jar の制限

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

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

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