2008-10-22 12 views
5

Có thể Thread.getContextClassLoader() không? Javadoc không thực sự rõ ràng.
Thư viện có nên xem xét trường hợp này không?Thread.getContextClassLoader() == null?

Cập nhật: Lý do tôi hỏi là beansbinding.dev.java.net không không làm việc trong trường hợp này (và mã của tôi không setContextClassLoader(null)

Trả lời

9

Java đề tạo ra từ mã JNI trong một thread phi java có ContextClassloader rỗng trừ khi tác giả một cách rõ ràng đặt nó.

Cũng trong bối cảnh như vậy Thread.currentThread() trả về null.

+0

Điều này có thể được khắc phục bằng cách đặt 'ClassLoader cl = ClassLoader.getSystemClassLoader(); Thread.currentThread(). SetContextClassLoader (cl); ' –

4

Có bạn nên, ai đó có thể đã kêu gọi Thread.setContextClassLoader(null) và thư viện của bạn IMO sẽ có thể để đối phó với đó.

+0

Đó thực sự là điều khó chịu. Thậm chí các lớp từ các phần mở rộng đã cài đặt sẽ không được tìm thấy với trình nạp lớp ngữ cảnh của luồng đó. –

+0

Tôi không hiểu tại sao điều đó lại khó chịu. –