Bảo vệ các ứng dụng Java thông thường
javaapp dùng cho các ứng dụng Java thông thường có lớp chính. Nó tạo ra tập tin nén được bảo vệ, VLX JRE cho nền tảng đích và script khởi động.
1. Thao tác GUI
-
Chọn Java Application trên trang loại ứng dụng.

-
Chọn tập tin JAR đầu vào, Phiên bản Java đi kèm và nền tảng đích, sau đó chọn chế độ đơn giản hoặc chế độ nâng cao.

-
Khi sử dụng chế độ nâng cao, hãy điền thông tin vào Main class theo nhu cầu và cấu hình các tham số JVM, JavaFX cùng các quy tắc loại trừ; chế độ đơn giản cho phép bỏ qua trang này. Ý nghĩa của các tùy chọn được giải thích trong Cài đặt chế độ nâng cao của Protector4J.

-
Chọn thư mục đầu ra, kiểm tra tóm tắt các tham số, sau đó nhấn Run protection.

2. Ví dụ CLI
Khi Manifest đã chứa giá trị Main-Class đúng:
p4j javaapp app.jar dist
Khi Manifest không có Main-Class, hoặc cần sử dụng lớp khởi tạo khác, hãy chỉ định thông qua --main:
p4j javaapp app.jar dist --main com.example.Main
Chỉ định cùng lúc lớp khởi tạo và các tham số JVM:
p4j javaapp app.jar dist \
--main com.example.Main \
--jvm-option -Xms512m \
--jvm-option -Xmx2g
Bảo vệ có chọn lọc:
p4j javaapp app.jar dist \
--protect 'com.example.core.**' \
--exclude 'com.example.core.dto.**'
Quét khả năng tương thích và đề xuất áp dụng tự động:
p4j javaapp app.jar --compat-scan
p4j javaapp app.jar dist --compat-apply
Hai tùy chọn này không thể sử dụng đồng thời; sự khác biệt giữa chúng là:
| Tùy chọn | Hành vi | Khi nào sử dụng |
|---|---|---|
--compat-scan | Chỉ quét tập JAR đầu vào, in thông báo về rủi ro và gợi ý cấu hình rồi thoát; không tiến hành mã hóa hay tạo ra dist, vì vậy không cần chỉ định thư mục đầu ra | Sử dụng công cụ này để xem báo cáo sau khi bảo vệ ứng dụng lần đầu, nâng cấp các phụ thuộc hoặc điều chỉnh phạm vi bảo vệ, cũng như khi khắc phục vấn đề tương thích |
--compat-apply | Sau khi quét, công cụ tự động kết hợp các gợi ý thận trọng, sau đó tiếp tục mã hóa và tạo ra kết quả đầu ra, vì vậy bắt buộc phải chỉ định thư mục đầu ra | Sử dụng công cụ này để hoàn tất việc đóng gói sau khi đã xem kết quả quét và chấp nhận các gợi ý tự động; cũng có thể dùng cho việc xây dựng lặp lại với các quy tắc đã được kiểm tra hoặc trong quy trình CI |
Đối với javaapp và --compat-apply, có thể thêm các lớp loại trừ dựa trên kết quả quét, đồng thời điều chỉnh các tùy chọn như ZIP overlay, JavaFX và phần mở rộng tập tin sau khi nén. Đối với ba tùy chọn cuối, giá trị được chỉ định rõ ràng trong dòng lệnh sẽ có ưu tiên; các lớp loại trừ được gợi ý sẽ được kết hợp mặc định với --exclude. Nếu không muốn thêm lớp loại trừ tự động, có thể đồng thời sử dụng --no-compat-excludes. Công cụ quét chỉ thực hiện phân tích heuristic tĩnh, những vấn đề đòi hỏi sửa đổi mã nguồn sẽ không được --compat-apply tự động sửa chữa, và vẫn cần tiến hành kiểm thử lại trên nền tảng mục tiêu sau khi tạo ra kết quả
Đối với các lệnh CLI khác, tất cả các tùy chọn, biến môi trường và ví dụ tự động hóa, vui lòng tham khảo Tham khảo tham số CLI.
3. Cấu trúc đầu ra
dist/
├── app.p4jx # hoặc --archive-suffix jar để tạo ra app.jar
├── vlxjre/ # môi trường chạy tương thích với hệ thống lưu trữ và nền tảng đích
├── lib/ # phụ thuộc vào Manifest Class-Path, có thể chọn không sử dụng
├── run.sh
├── run.command
├── run.bat
└── README.md
Các tài nguyên không phải class được lưu trữ trong view tài nguyên công khai của P4JX. Các tài nguyên class được bảo vệ chỉ hiển thị dữ liệu siêu dữ liệu cho trình quét; thân phương thức thực sự chỉ có thể được tải bởi môi trường chạy VLX.
4. Khởi động
./run.sh [tham số ứng dụng...]
Windows:
run.bat [tham số ứng dụng...]
Đừng thay thế vlxjre trong thư mục đầu ra bằng JRE hệ thống. Nếu cần khởi động thủ công, hãy giữ nguyên class path, các tham số VM và tham số mô-đun JavaFX bằng cách sử dụng script tạo ra làm mẫu.
Các tham số khởi động JVM
Khi đóng gói, có thể nhập một tham số mỗi dòng trong JVM startup options trên giao diện GUI, hoặc sử dụng lại chúng trong CLI:
--jvm-option -Xms512m --jvm-option -Xmx2g
Thay đổi vĩnh viễn thư mục hiện tại sau khi triển khai:
- macOS/Linux: Chỉnh sửa
run.sh, thêmJVM_OPTS+=("-Xms512m" "-Xmx2g")trước phần kiểm tra trongAPP_JAVA_OPTS;run.commandsẽ gọi đến cùng tập tinrun.sh. - Windows: Chỉnh sửa
run.bat, thêmset "JVM_OPTS=%JVM_OPTS% -Xms512m -Xmx2g"trước phần kiểm tra trongAPP_JAVA_OPTS.
Các tham số tạm thời có thể được đưa vào thông qua APP_JAVA_OPTS. Ví dụ đầy đủ và các lưu ý có thể được tìm thấy tại Cấu hình tham số khởi động JVM. Việc chỉnh sửa bằng script thủ công sẽ bị ghi đè khi tái đóng gói.
5. Gợi ý về phạm vi bảo vệ
Loại ứng dụng được bảo vệ mặc định. Đối với các dự án sản xuất, nên xác định rõ các gói dịch vụ riêng của mình một cách rõ ràng hơn:
--protect 'com.mycompany.product.**'
Những thành phần thường cần được loại trừ:
- Các DTO, record được Jackson sử dụng để trực tiếp thực hiện việc tuần tự hóa/dé tuần tự hóa;
- Các lớp mà JNI truy cập vào các trường hoặc phương thức của chúng;
- Các lớp mà các framework ORM, tiêm tham số hoặc proxy yêu cầu phải được chỉnh sửa;
- Các thư viện của bên thứ ba và các framework mã nguồn mở;
- Lớp cần được định nghĩa lại từ mảng byte bằng ClassLoader tùy chỉnh.
6. Phần mở rộng .p4jx và .jar
p4j javaapp app.jar dist --archive-suffix jar
Tùy chọn này chỉ thay đổi tên tập tin, nội dung của tập tin nén vẫn là P4JX. Chỉ nên sử dụng khi các thành phần bên thứ ba khóa trực tiếp giá trị .jar trong URL hoặc tên tập tin; nó sẽ không biến tập tin nén thành định dạng ZIP/JAR thông thường.