2013-07-20 13 views
7

Tôi đã tìm thấy thông tin mà java. * Và javax. * Là các tên gói bất hợp pháp (được bảo lưu) (trong cuốn sách "Hướng dẫn học lập trình OCA Java SE 7"). Khi tôi thử tạo gói "java" và chạy lớp từ nó, tôi nhận được:Có phải tên gói "javax" bất hợp pháp (được bảo lưu) không?

Exception in thread "main" java.lang.SecurityException: Prohibited package name: java 

nhưng khi tôi chạy lớp từ gói "javax" tôi không nhận được lỗi. Trên docs.oracle.com Tôi chỉ tìm thấy thông tin:

Packages in the Java language itself begin with java. or javax. 

vì vậy ... có phải là "javax" tên bất hợp pháp hay không? Có lẽ nó chỉ bất hợp pháp trên Java EE, hoặc phiên bản Java cũ hơn? (Tôi đã thử nó trên JDK 1.6.0_43 và 1.7.0_25)

+0

http://stackoverflow.com/questions/727844/javax-vs-java-package – ZhongYu

+1

Cảm ơn, tôi đã xem chuỗi này rồi. Nó cung cấp thông tin tốt về gói javax, nhưng nó không nói là tên hợp pháp cho gói hay không. – SathOkh

Trả lời

3

javax. được sử dụng cho các phần mở rộng (có thể nằm trong JRE). có thể định nghĩa các lớp trong các gói đó. IIRC, điều này có thể được vô hiệu hóa trong bối cảnh không tin cậy bằng cách thêm javax. vào thuộc tính bảo mật package.definition (không được chọn).

java. đặc biệt vì ClassLoader ngăn trình tải lớp không khởi động trong các gói đó dưới dạng biện pháp chống Microsoft.

+0

Tôi không nghĩ Java chỉ là đặc biệt vì trình nạp lớp; nó chứa API cơ sở chính thức của Java. Bạn có bất kỳ tài liệu tham khảo cho câu trả lời này? –

+1

@owlstead 'java/lang/ClassLoader.java'. Cụ thể phương thức 'preDefineClass'. –

+0

Vì vậy, nó chỉ là lỗi trong cuốn sách? – SathOkh

Các vấn đề liên quan