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-webviewWebViewの含めることを強制する
--no-javafx-webviewWebViewの除外を強制する
--no-javafxJavaFXを明示的に無効にする

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-webviewWebViewの含めることを強制する。
--no-javafx-webviewWebViewの除外を強制する。
--no-javafxJavaFXを明示的に無効にする

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-jspJSPの事前コンパイルを強制する
--no-precompile-jspJSPの事前コンパイルを禁止する

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_DIRVLX 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起動パラメータの設定を参照してください