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용 시작 스크립트 작성; 각 매개변수는 한 번만 사용되며 반복 가능

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-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_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 시작 파라미터 설정를 참조하십시오.