2011-11-21 21 views
20

tôi nhận được lỗi này:java.lang.InternalError: tên quá dài để đại diện cho

java.lang.InternalError: name is too long to represent 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:621) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
     at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:338) 
     at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:291) 
     at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:259) 

mà dường như liên quan đến một số chức năng debug (trên thực tế loại bỏ -Xdebug tùy chọn dòng lệnh lỗi biến mất). Tôi cũng đã tìm thấy một số thông tin trong ASF Bugzilla. Có cách nào để giải quyết này?

Các giải pháp có thể tôi có thể nghĩ là thay đổi JVM (sử dụng JRockit không có vấn đề này), nhưng tôi thực sự không biết liệu điều này có thể giải quyết được vấn đề hay không và nếu nó có thể phá vỡ điều gì khác.

+2

Nếu đó là một lỗi được biết chúng ta không thể giải quyết nó một trong hai. Việc chuyển đổi các JVM không hoạt động nói chung, tất nhiên bạn phải thử nghiệm với một JVM khác. – home

+2

Bạn có thể đọc bài đăng cuối cùng: https://forums.oracle.com/forums/thread.jspa?threadID = 943287 –

+0

Dường như lỗi này không có trạng thái phân giải trong trình theo dõi của Sun và nó cũng có mức độ ưu tiên thấp. Tôi không nghĩ rằng nó sẽ tốt hơn trong các JVM gần đây hơn. Được mở từ năm 2005, có vẻ như họ không quan tâm đến nó. –

Trả lời

10

cập nhật Lỗi được đề cập trong câu trả lời ban đầu dưới đây hiện đã bị đóng!


Như đã lưu ý trong bài viết bạn tham khảo, đây là bug trong triển khai JVM Sun/Oracle. Tại thời điểm viết, nó chưa được giải quyết.

tôi có thể nghĩ ra ba cách để làm việc xung quanh vấn đề này:

  1. Đừng tạo file SMAP ở tất cả (ví dụ: không chạy với -Xdebug hoặc sử dụng cài đặt suppressSmap-like)
  2. Hãy thử để đảm bảo rằng kích thước của thông tin gỡ lỗi nhỏ (ví dụ: giảm kích thước mã của bạn)
  3. Sử dụng cài đặt máy ảo khác.
+0

Cảm ơn câu trả lời của bạn, chỉ hai điểm: Bạn có xác nhận lỗi hiện diện trong phiên bản 5 và 6 Sun JVM không? (Xin lưu ý rằng Oracle JRockit VM không nên có vấn đề này). Bạn có thể xây dựng một chút về "suppressSmap-like" không? – Paolo

+0

+1, tôi sẽ chấp nhận câu trả lời này, nếu các chi tiết tôi hỏi sẽ được cung cấp. – Paolo

+0

Tôi chưa sao chép các lỗi trên cả Sun/Oracle 5 và 6, nhưng lỗi báo cáo mà tôi liên kết đến vẫn chưa được giải quyết. Điều đó, kết hợp với ý kiến ​​đang diễn ra trong báo cáo, là một dấu hiệu tốt cho thấy lỗi vẫn còn hiện diện. Đối với các cài đặt giống như SuppressSmap: một số triển khai làm việc xung quanh lỗi này bằng cách cung cấp các thiết lập tùy chỉnh để ngăn chặn việc tạo dữ liệu gỡ lỗi. Xem, ví dụ: phần 'các sự cố đã biết' tại http://tomcat.apache.org/tomcat-6.0-doc/jasper-howto.html – Guus

1

Nếu bạn có thể xác định lớp gây ra sự cố, bạn có thể sử dụng Stripper để xóa thông tin tiện ích gỡ lỗi khỏi một lớp đó mà vẫn có thể gỡ lỗi phần còn lại.

2

Một việc xung quanh mà làm việc đối với tôi là cách thêm các mục sau đây trong tomcat/conf/web.xml:

<init-param> 
    <param-name>suppressSmap</param-name> 
    <param-value>true</param-value> 
</init-param> 
0

tôi phải đối mặt với chính xác cùng một lỗi. Lỗi này sẽ chỉ được báo cáo khi tôi khởi động Tomcat ở chế độ gỡ lỗi và đối với tệp JSP nhất định (kích thước lớn). Khi tôi khởi động Tomcat ở chế độ bình thường (không sử dụng Debug) thì lỗi sẽ bị xóa. Lỗi này bắt đầu hiển thị gần đây, sau khi tệp JSP tăng kích thước theo thời gian.

Cách duy nhất tôi có thể giải quyết lỗi này là nâng cấp Tomcat từ phiên bản 5.5 lên phiên bản 7.0 và JRE thành jdk1.7.

Xem ảnh chụp bên dưới để giúp bạn tải ảnh.

enter image description here

Ngoài ra, đừng quên để thêm các thư viện cần thiết cần thiết cho Tomcat 7 và JRE mới.

Ban đầu, cập nhật các tập tin web.xml để bao gồm các phần sau đây sẽ giải quyết vấn đề, nhưng gần đây nó không còn được làm việc:

<init-param> 
      <param-name>mappedfile</param-name> 
      <param-value>false</param-value> 
    </init-param>