Tôi nhận được ff. lỗi trong Java Bảng điều khiển thỉnh thoảng mới:Trình nạp lớp Applet không thể tìm thấy một trong các lớp trong jar
Exception in thread "thread applet-my.package.MyApplet-10" java.lang.NoClassDefFoundError: another/package/SomeClass
at my.package.MyApplet.init(MyApplet.java:95)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: another.package.SomeClass
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 3 more
Caused by: java.io.IOException: open HTTP connection failed:https://myserver/mycontext/applets/another/package/SomeClass.class
at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 7 more
thẻ Applet của tôi là như sau:
<applet codebase="../../applets" code="my.package.MyApplet" class="invisible" id="myApplet">
<param value="value0" name="param0"/>
...
<param value="valueN" name="paramN" />
<param value="folder/myApplet__0.0.1177.jar,folder/commons-io-1.3.2__0.0.1177.jar,..." name="cache_archive"/>
<param value="0.0.1177.0,0.0.1177.0,...," name="cache_version"/>
</applet>
Điều quan trọng là tôi nhấn mạnh từ "thỉnh thoảng". Đôi khi applet được khởi tạo mà không bị cản trở. Điều này cũng có nghĩa là, thường, khi trình duyệt được khởi động lại, sự cố sẽ biến mất.
Tôi biết về applet fails to load class from jar và Applet class loader cannot find a class in the applet's jar nhưng tôi nghĩ rằng chúng không áp dụng cho trường hợp của tôi. SomeClass và MyApplet nằm trong cùng một lọ và trang đang được truy cập cục bộ.
Tôi nghĩ điều xảy ra là trình cắm Java của trình duyệt không thể tải lớp từ myApplet__0.0.1177.jar và vì vậy đã đi tìm nó trong thư mục codebase. Câu hỏi đặt ra là làm thế nào là nó có thể tải MyApplet nhưng không phải là SomeClass? –
Phiên bản Java nào được sử dụng ở phía máy khách? – uthark
Bạn đã nói rằng trang đang được truy cập cục bộ, nhưng trong nhật ký tôi thấy "myserver". Đây có phải là tên máy cục bộ của bạn không? Ngoài ra, bạn sử dụng trình duyệt nào để kiểm tra? Internet explorer, firefox? – uthark