Javaライブラリの保護
Library Encryptionは下位レベルのencodeコマンドに対応し、保護されたアーカイブを1つのみ生成します。実行時環境はコピーされず、アプリケーションの起動スクリプトも作成されません。
1. GUI操作
-
アプリケーションタイプページでLibrary Encryptionを選択します。直接起動可能なデリバリーパッケージが必要な場合は、Java Application、Spring Boot、またはTomcat WARを選択してください。

-
入力JAR、実際のロード環境と一致するJavaバージョンおよびターゲットプラットフォームを選択し、シンプルモードまたはアドバンスドモードを選びます。ライブラリの出力には
vlxjreは含まれませんが、これらの設定は依然としてアーカイブに対応する実行時環境を決定するために使用されます。生成物の数を減らすために異なるプラットフォームの出力を混在させないでください。
-
シンプルモードでは、入力JARがスキャンされ、Library EncryptionでサポートされているZIP overlayやアーカイブのサフィックスに関する推奨事項が自動的に適用されます。入力JAR内のすべての
.classエントリは引き続き暗号化されますが、その他のリソースは暗号化されません。 -
アドバンスドモードでは、必要に応じて設定を行うことができます。
- Disable JIT for protected methods:保護されたメソッドをインタプリタ内でのみ実行する。
- Append scanner ZIP overlay:ZIPの中央ディレクトリを直接解析するツール向けに、公開リソースおよびメタデータスタブを提供する;
- Compatibility scan…:ZIPアクセス、サフィックスの仮定、JNI/ネイティブクラス、実行時のバイトコード読み取りなどの互換性リスクをスキャンする。
-
出力ページで完全な出力ファイル名を選択し、通常は
.p4jxが使用される。インテグレーションプログラムが.jarというサフィックスの使用をハードコーディングしている場合のみ、.jarが使用される。詳細設定ページのArchive suffixでの選択やスキャンの推奨事項に基づき、選択したファイルに.p4jx/.jarというサフィックスが自動的に付与される。Javaバージョン、ターゲットプラットフォーム、JIT、scanner overlayを確認したら、Run protectionをクリックする。単一プラットフォームのタスクでは、選択した正確なファイルパスが使用される。複数のターゲットプラットフォームを選択した場合、GUIはそのファイルがあるディレクトリ内にプラットフォームごとのサブディレクトリを作成し、それぞれ対応するアーカイブを保存する。
2. 適用シナリオ
- 他の管理対象のP4JXアプリケーションの構成要素として含まれる自身のJARを「保護」する;
- 既存のスターターを使用してP4JXアーカイブを読み込みます。
- 完全なデリバリーディレクトリを自分で管理する必要がある高度な統合機能です。
対象が直接実行可能な通常のアプリケーション、Spring Boot、またはTomcatの場合は、対応するパッケージングコマンドを使用してください。
3. 基本コマンド
p4j encode library.jar library.p4jx
略語を使用することもできます。
p4j library.jar library.p4jx
encodeはユーザーが指定した完全な出力ファイル名を書き込むため、以下の両方ともP4JX形式です。
p4j encode library.jar library.p4jx
p4j encode library.jar library.jar
4. ZIP overlay
p4j encode library.jar library.p4jx \
--zip-overlay scanner
overlayには、ZIPの中央ディレクトリを直接解析するツールとの互換性を図るための、公開リソース、ディレクトリ、メタデータのみが含まれています。これにより実際の保護方法が露見したり、P4JXが通常のJARに変わったりすることはありません。
5. 実行時の要件
下位レイヤーのencodeはvlxjreを生成しないため、利用者はエンコード時の身分情報と一致するVLX実行環境を用意する必要があります。以下の行為は避けてください:
- 通常のOpenJDK/Oracle JDKを使用して読み込むこと。
- 別バージョンの出力パッケージから
lib/modulesやネイティブライブラリをコピーすること。 - 異なるターゲットプラットフォーム、JDKトレーニングライン、またはエンコードタスク用の実行環境をアーカイブと混在させて使用すること。
通常のデリバリープロジェクトの場合、これらの関係を自動的に管理するために上位レイヤーのパッケージングコマンドを優先的に使用してください。
6. ライセンス
アーカイブを生成する際には、サーバーが発行したライセンスを必ず正常に取得し、それを組み込む必要があります。正式アカウントと試用モードでは、同じアーカイブ検証プロセスが適用されます。自動化環境では、エクスポートされるタスクスクリプトにパスワードを硬コーディングしてはいけません。