GUI 사용 가이드
GUI는 마법사 방식으로 보호 작업을 수행하며, 그 절차는 다음과 같습니다:
애플리케이션 유형 → 입력/실행 시/플랫폼 → 기본 또는 고급 매개변수 → 출력 확인 → 실행
1. 애플리케이션 유형
| GUI 옵션 | 입력 | 출력 | 해당 CLI |
|---|---|---|---|
| Java Application | 일반 실행 가능 JAR 파일 | 전체 애플리케이션 디렉토리 | javaapp |
| Spring Boot | Spring Boot 애플리케이션 | 전체 애플리케이션 디렉토리 | springboot |
| Tomcat WAR | WAR | 내장된 Tomcat 디렉토리 | tomcat |
| Library Encryption | 임의의 JAR 파일 | 단일 P4JX 아카이브 | encode |
잘못된 유형을 선택하면 메인 클래스, 의존성, Web 리소스 또는 스타터가 올바르게 처리되지 않을 수 있습니다.

2. 입력, 런타임 및 대상 플랫폼
한 번의 가이드형 작업에서 입력할 JAR 또는 WAR 파일을 하나 선택합니다. 그 다음 다음 항목을 선택합니다:
- Bundled Java version: 8, 11, 17, 21 또는 25, 기본값은 21입니다.
- Target platforms: 여러 플랫폼을 한 번에 선택할 수 있습니다.
- Mode: 간단 모드 또는 고급 모드.
여러 플랫폼을 선택할 경우, 도구는 각 플랫폼에 대해 별도의 디렉터리를 생성합니다.

3. 간단 모드
간단 모드는 대부분의 첫 번째 패키징 작업에 적합합니다. 입력 페이지를 떠날 때 도구는 자동으로 호환성 검사를 수행하고 그 결과에 따라 다음 항목을 선택합니다:
- 제외하는 것이 권장되는 클래스들;
- JavaFX 및 WebView를 활성화할지 여부;
- 스캐너 ZIP overlay를 활성화할지 여부;
.jar접미사로 변경할지 여부;- Spring Boot의 권장 레이아웃;
- Tomcat 9 또는 10.1.
스캔 결과는 정적 분석을 통한 권장 사항이며, 완전한 실행 테스트가 아닙니다. 패키징한 후에도 대상 플랫폼에서 애플리케이션 테스트를 진행해야 합니다.
4. 고급 모드
고급 모드에서는 아카이브 접미사를 수동으로 설정하고, JIT를 비활성화할지 여부를 지정하며, scanner overlay 계층을 추가하고, JVM 매개변수를 설정하고, 제외 규칙을 지정할 수 있으며, 각 애플리케이션 유형에 맞는 전용 옵션도 사용할 수 있습니다.
상세한 사용 안내, 매개변수의 의미, 기본값 및 애플리케이션 유형 간의 차이점은 Protector4J 고급 모드 설정를 참조하십시오.

5. 제외 규칙
GUI와 CLI는 동일한 규칙을 적용합니다:
com.example.SecretService 정확한 클래스명
com.example.service.* 현재 패키지만
com.example.service.** 현재 패키지 및 모든 하위 패키지
DTO, 엔티티, Controller, 설정 클래스, JNI 브리지 클래스 및 런타임 바이트코드 강화가 필요한 클래스는 제외하고 핵심 비즈니스 로직만 보호하는 것이 권장됩니다.
6. 출력 확인
마지막 페이지에는 다음 내용이 표시됩니다:
- 입력값과 애플리케이션 유형;
- Java 버전과 목표 플랫폼;
- JavaFX 상태;
- 아카이브 형식, JIT, overlay 및 Spring 레이아웃;
- 보호 범위, 제외 규칙 및 Tomcat context.
Create new folder를 선택하면 출력 디렉터리에 고유한 p4jx-xxxx 하위 디렉터리가 생성됩니다. 기존 Tomcat 패키지 디렉터리를 직접 지정해야 하므로 Tomcat 애플리케이션을 추가할 때는 이 옵션을 활성화할 수 없습니다.

7. 작업 파일 내보내기 및 로드
고급 파라미터 페이지와 최종 확인 페이지를 내보낼 수 있습니다:
p4j-encrypt-run.shp4j-encrypt-run.bat
스크립트가 설치된 p4j 명령을 호출하고 현재 해석된 옵션들을 저장합니다. 계정 이메일과 비밀번호는 파일에 기록되지 않습니다.
화면 상단의 Load Task File를 사용하여 스크립트를 다시 로드하고 작업을 복원한 후 바로 최종 확인 페이지로 이동할 수 있습니다. 이전 버전의 스크립트에 작업 메타데이터가 없는 경우, GUI는 그 안에 포함된 p4j 명령을 해석하려고 시도합니다.