Java 클래스 라이브러리 보호
Library Encryption은 하위 수준의 encode 명령과 연동되며, 보호된 아카이브 하나만 생성하고 런타임을 복사하지 않으며 애플리케이션 시작 스크립트도 생성하지 않습니다.
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. 라이선스
아카이브를 생성할 때는 서버에서 발급한 라이선스를 반드시 성공적으로 획득하여 포함시켜야 합니다. 정식 계정과 체험 모드 모두 동일한 아카이브 검증 절차를 따릅니다. 자동화 환경에서는 내보내는 작업 스크립트에 비밀번호를 하드코딩해서는 안 됩니다.