2010-09-02 30 views
25

Khi cố gắng xuất trên WebLogic 11g, nó ném ngoại lệ NoClassDefFound. Tôi đã kiểm tra ứng dụng WAR và jasperreports-3.7.4.jar được bao gồm trong thư mục WEB-INF/lib. Lỗi là gì?JasperReports NoClassDefFoundError ngoại lệ trên net.sf.jasperreports.engine.util.JRStyledTextParser

StackTrace

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/util/JRStyledTextParser at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:181) at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:76) at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:86) at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:56) at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624) at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:676) at

+0

Không có nguyên nhân gốc rễ? Nhìn xa hơn trong dấu vết. Việc khởi tạo lớp có thể không đồng đều. – BalusC

+0

Có nhiều jasperreport lọ trong ứng dụng web hoặc classpath. – JoseK

+0

@JoseK Có vẻ như chỉ có một cái lọ tồn tại trên classpath. Tôi đã cố gắng triển khai WAR này mà không có Jasperreport.jar trong nó, nhưng nó ném ngoại lệ cho NoClassDefFound trên các lớp Jasper. –

Trả lời

32

Cuối cùng, tôi đã nhận nó làm việc. Tôi phát hiện ra ngoại lệ gốc, được ném trước NoClassDefFoundError: net/sf/JasperReports/động cơ/util/JRStyledTextParser:

java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 

Các lớp Sun AWT trên Unix và Linux có một sự phụ thuộc vào Hệ thống X Window. Khi bạn sử dụng các lớp này, họ mong đợi tải các thư viện máy khách X và có thể nói chuyện với một máy chủ hiển thị X. Điều này có ý nghĩa nếu khách hàng của bạn có GUI; Thật không may, nó được yêu cầu ngay cả khi khách hàng của bạn sử dụng AWT nhưng không có GUI (trường hợp của tôi, tạo báo cáo từ một ứng dụng web)

Cách để bỏ qua điều này, đang thiết lập thuộc tính hệ thống java.awt.headless=true khi khởi động hệ thống.

+1

Có ai gặp sự cố khi sử dụng giải pháp java.awt.headless = true trên máy khác không? Nó đang làm việc cho chúng tôi trên một trong những triển khai của chúng tôi, trong khi không làm việc trên một triển khai khác. Cả hai triển khai đều sử dụng cùng một phiên bản JVM. –

+0

Đã làm việc với tôi! Máy chủ của tôi là [Weblogic 12c] (http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html). Tôi đã thêm giá trị '-Djava.awt.headless = true' trong các đối số khởi tạo máy chủ, chính xác trong tab Tiếp tục máy chủ. –

2

Phân tích cú pháp văn bản Ngoại lệ có nghĩa là phông chữ chưa được nhận dạng. Tôi đã dành cả ngày cố gắng để hiểu lý do tại sao, sau đó cuối cùng tôi khắc phục vấn đề này bằng cách sử dụng SansSerif văn bản. Trên Linux chỉ có một vài phông chữ có thể được phân tích cú pháp. Hy vọng đã giúp, lời chúc mừng tốt đẹp nhất

1

Chúng tôi có vấn đề tương tự. chúng tôi đã giải quyết nó bằng cách sử dụng tệp jar lưu lượng jasper java. số

java.awt.headless=true 

không hoạt động đối với chúng tôi.

+5

Bạn có thể chia sẻ một số chi tiết về cách bạn đạt được điều này không? Tôi đang gặp vấn đề tương tự và tôi đã thử sử dụng bình chứa java nhưng điều đó không có tác dụng đối với tôi. Có cái gì tôi đang mất tích? – user1066568

+0

nơi chính xác cần thêm dòng này? –

+0

@Elango Bạn cần đặt thuộc tính java.awt.headless thành true. Điều đó có thể được thực hiện bằng cách sử dụng: tĩnh { System.setProperty ("java.awt.headless", "true"); } Hoặc, bằng cách đặt thuộc tính không đầu trong lệnh khởi động tomcat của bạn dưới dạng -Djava.awt.headless = true – kozla13

4

Tôi gặp sự cố tương tự và chúng tôi đã giải quyết vấn đề này bằng cách cài đặt các gói phông chữ xorg cùng với phông chữ ttf.

0

Bạn gặp lỗi tương tự nếu không có đủ dung lượng. Tôi đã có lỗi tương tự và đó là vì có 0KB không gian trống trên ổ cứng của máy chủ.

0

Tôi đã gặp vấn đề tương tự và nó đã được giải quyết bằng cách giảm không gian/tmp. Đó là thư mục 100% (/ tmp). Tôi giảm nó xuống 86% và khởi động lại máy chủ và noclassdefinitionerror đã biến mất và vấn đề đã được giải quyết.

0

Đối mặt với vấn đề này nhiều lần và tôi đã có giải pháp. Lỗi này xảy ra do thiếu dung lượng bộ nhớ trên đĩa ... Bạn có thể thử các cách dưới đây để giải quyết: (i) Tạo đủ không gian trong thư mục tmp (ii) Xóa một số tệp không cần thiết trên đĩa để tạo khoảng trắng.

Chúc may mắn..Hy vọng .. cần giải quyết vấn đề của bạn

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