CLIパラメータの参考
この例では、インストール後に提供されるp4jコマンドが使用されています。Windows GUIは.exeを通じてインストールされ、macOS GUIは.dmg内のProtector4J.appを通じてインストールされますが、GUIのインストール方法に関わらず、以下のCLI構文は変わりません。インストーラーがCLIをPATHに含めていない場合は、Protector4Jのインストールディレクトリにあるコマンドラインエントリから実行してください。
p4j --help
1. コマンド
p4j encode <input.jar> <output.p4jx|output.jar> [options]
p4j javaapp <input.jar> <output-dir> [options]
p4j springboot <input.jar> <output-dir> [options]
p4j tomcat <input.war> <output-dir> [options]
下位レベルのencodeではコマンド名を省略することもできます:
p4j input.jar output.p4jx [options]
2. 一般的なオプション
| オプション | 説明 |
|---|---|
--no-jit | 保護方法としてのJITを禁止し、インタプリタによる実行に切り替える。 |
--zip-overlay off|scanner | スキャナーのZIP互換ビューを無効にするか追加し、デフォルトはoffとする。 |
--compat-scan | スキャンのみを行い終了する。出力パラメータは不要。 |
--compat-apply | スキャンを行い、保守的な推奨事項を適用した後、エンコードを続行する。 |
--no-compat-excludes | --compat-applyと連携して、推奨される除外クラスを自動的に追加しない。 |
--account-email <email> | ライセンスアカウントのメールアドレス。 |
--account-password <password> | ライセンスアカウントのパスワード。 |
--app-id <id> | 指定アプリケーションの識別子 |
--license-expires-in <sec> | サーバーのポリシーによって制約される、試用期間の有効秒数のリクエスト |
高度なパッケージングコマンドのサポート:
| オプション | 説明 |
|---|---|
--archive-suffix p4jx|jar | アーカイブされたファイルのサフィックスを生成し、デフォルトはp4jx;内部フォーマットは変更されない |
--jvm-option <option> | macOS/LinuxおよびWindows用の起動スクリプトを作成して書き込む;各パラメータは1回のみ使用可能だが、繰り返し使用可能 |
3. encode
p4j encode input.jar output.p4jx [options]
| オプション | 説明 |
|---|---|
--runtime-major <N> | リソースビュー/Multi-Release の展開先を指定。デフォルトは 21 |
4. javaapp
p4j javaapp input.jar output-dir [options]
| オプション | 説明 |
|---|---|
--main <class> | 起動用のメインクラスを指定する |
--protect <rules> | 保護するクラス/パッケージの規則をカンマで区切って指定します。デフォルトではすべてのクラスが適用されます。 |
--exclude <rules> | 保護範囲から除外する |
--javafx [<dir>] | JavaFXを有効にする。オプションとしてローカルの素材ディレクトリを指定可能 |
--javafx-webview | WebViewの含めることを強制する |
--no-javafx-webview | WebViewの除外を強制する |
--no-javafx | JavaFXを明示的に無効にする |
5. springboot
p4j springboot input.jar output-dir [options]
| オプション | 説明 |
|---|---|
--main <class> | Spring Bootのメインクラスを指定する。デフォルトではManifestを読み込む。 |
--protect <rules> | BOOT-INF/classes内で一致するクラスを「保護」する。 |
--exclude <rules> | クラスまたはパッケージを除外する。 |
--protect-lib <globs> | 一致するBOOT-INF/libのJARファイルを「保護」する。複数指定の場合はカンマで区切る。 |
--layout p4jx-fat|fat|separate | 出力レイアウトを指定する。デフォルトはp4jx-fat。 |
--javafx [<dir>] | JavaFXを有効にする。オプションとしてローカルの素材ディレクトリを指定可能。 |
--javafx-webview | WebViewの含めることを強制する。 |
--no-javafx-webview | WebViewの除外を強制する。 |
--no-javafx | JavaFXを明示的に無効にする |
6. tomcat
p4j tomcat input.war output-dir [options]
| オプション | 説明 |
|---|---|
--exclude <rules> | WEB-INF/classesに含まれるクラスやパッケージを除外する |
--context </path> | コンテキストパス、デフォルトは/app |
--append-app | アプリケーションを既存のP4JX Tomcatパッケージに追加する |
--tomcat-version auto|9|10 | 自動検出または強制バージョン設定、CLIのデフォルトはauto |
--precompile-jsp | JSPの事前コンパイルを強制する |
--no-precompile-jsp | JSPの事前コンパイルを禁止する |
7. ルールの構文
com.example.SecretService 単一クラス
com.example.service 直接パッケージのマッチング
com.example.service.* 直接パッケージのマッチング
com.example.service.** パッケージおよびそのすべてのサブパッケージ
com/example/Secret.class class エントリーパス
複数のルールはカンマで区切り、shell内で*が含まれる場合は引用符を付ける必要があります:
--protect 'com.example.**' --exclude 'com.example.dto.**,com.example.config.**'
8. 環境変数
| 変数 | 説明 |
|---|---|
P4JX_RUNTIME_JAVA_VERSION | 上層パッケージングで使用されるJavaトレーニングライン:8/11/17/21/25 |
P4JX_RUNTIME_PLATFORM | ターゲットプラットフォームID |
P4JX_RUNTIME_CACHE_DIR | VLX JREダウンロード用キャッシュディレクトリ |
APP_JAVA_OPTS | 生成されたアプリケーションを実行する際に一時的にJVMパラメータを追加する機能で、macOS/LinuxおよびWindowsのいずれでも利用可能 |
Javaのシステムプロパティに相当する値を利用して、エンコーダJARを直接起動するような高度なシナリオに適している
-Dp4jx.runtime.java.version=<N>
-Dp4jx.runtime.platform=<platform>
-Dp4jx.runtime.cache.dir=<dir>
9. 自動化の例
P4JX_RUNTIME_JAVA_VERSION=21 \
P4JX_RUNTIME_PLATFORM=linux-x64 \
p4j springboot build/app.jar release/linux-x64 \
--compat-apply \
--protect 'com.example.service.impl.**' \
--exclude 'com.example.dto.**,com.example.config.**' \
--jvm-option -Xms1g \
--jvm-option -Xmx2g \
--app-id com.example.app
明示的な保護/除外設定やレイアウトオプションは、自動的に提案される内容を上書きする。最終的なパラメータ、入力されたSHA-256値、ツールのバージョン情報は、リリースの出所を記録するために保存しておくことを推奨する
GUI、CLI、run.sh/run.batの直接編集、Tomcatの起動スクリプト、およびWindows PowerShellの例についてはJVM起動パラメータの設定を参照してください