2012-06-13 2 views
0

Jasper 보고서를 컴파일하거나 실행할 때 NoClassDefFoundError 오류가 발생합니다.Jasper가 NoClassDefFoundError를보고합니다.

2012-06-13 14:46:26,710 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/jahtest].[jahtest]] Servlet.service() for servlet jahtest threw exception 
java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.xml.JRXmlDigesterFactory 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:207) 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172) 
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156) 

나는 war 파일에 싸서 배치 된 JBoss default/deploy 폴더에 java 클래스 집합을 가지고 있습니다. JBoss default/lib 폴더에 jasperreports-4.1.2.jar 파일이 있으므로 libpath에있는 다른 모든 jar 파일을 볼 수 있기 때문에 classpath 문제가 발생할 수 있습니다.

제 프론트 엔드 앱이 리플렉션을 사용하여 재스퍼 코드가 포함 된 클래스를 호출하는 HTTPServlet 클래스를 호출합니다. 이 라인이 호출 될 때까지 모든 것이 잘 작동합니다. -

JasperDesign jasperDesign = JRXmlLoader.load(strCompiledReportFile); 

strCompiledReportFile이 정확하고 존재합니다. 이 모든 것은 Eclipse를 통해 실행할 때 작동합니다. HTTPServlet 클래스에서 호출 된 경우가 아닙니다.

저는 이것이 많은 문제를 겪었 기 때문에 벽옥을 버리고 싶습니다. 마지막 기회 살롱입니다.

당신이 제공 할 수있는 도움에 대한 환호.

+0

내 JBoss 기본/lib 폴더에 필요한 모든 jar를 가지고있는 것 외에 다른 곳에서 참조해야 할 곳이 있습니까? 내 war 파일의 WEB-INF \ lib 폴더에 추가하려고 시도했지만, C : \ Program Files \ Java \ jdk1.6.0_13 \ jre \ lib 폴더에도 추가하려고 시도했지만 여전히 같은 오류. – user1167796

+0

이것은 매우 실망 스럽습니다! 서블릿을 통해 Jasper 클래스에 액세스하려고 할 때만 오류가 발생합니다. 어떤 클래스의 Jasper 코드를 사용하는 메소드를 호출하면 클래스를 성공적으로 액세스 할 수 있습니다. – user1167796

+0

맞아, 내 서블릿에 클래스 패스 문제가 있어야한다. 필자는 서블릿을 실행할 때보 다 Eclipse를 실행할 때 런타임 클래스 경로가 다른 것으로 판단했습니다. 내 war 파일의 web-inf/lib 폴더에 필요한 jar를 모두 추가했습니다. 여전히 작동하지 않습니다! 내 WAR 파일의 매니페스트 파일에 클래스 경로를 설정해야합니까? 그렇다면 어떻게해야합니까? – user1167796

답변

1

나는 재스퍼가 런타임에 의존하는 몇 개의 jar 파일이 누락되었다고 생각합니다. 이 thread을 확인하고 클래스 패스에 해당 병이 있는지 확인하십시오.

+0

제안 해 주셔서 감사합니다. 그냥 확인하고 모든 제안 된 jar 파일은 이미 내 JBoss 기본/lib 폴더에 포함되어 있습니다. – user1167796

+0

런타임에 일부 항아리가 누락되었다고 확신합니다. 어느 항아리인지 알기가 어렵습니다. stacktrace에 더 자세한 정보가 있습니까? – helios

+0

이것은 모두 생성 된 것입니다 ..... – user1167796

0

당신의 경우에도 적용 할 수 있을지 모르겠지만, 최근에 비슷한 문제가 발생했습니다. 폰트를로드하지 못했을 때 (재밌는 글꼴 데이터), Jasper Reports는 가짜로 시작합니다. java.lang.NoClassDefFoundError 많은 수업; java.awt.Font.createFont(int fontFormat, InputStream fontStream) 시도하고 임시 파일을 만들지 못했기 때문에이 문제가 발생했습니다. 오류는 Tomcat 내부에서 발생했지만 Eclipse 내부에서는 발생하지 않았습니다. 무슨 일이 있었는지는 Tomcat이 JVM이 기본 폴더 대신 임시 폴더를 가리 키도록 자동으로 구성하고 Tomcat의 임시 폴더가 삭제되었다는 것입니다.

관련 문제