2014-06-18 2 views
0

남자. 내가 자바 런타임에 대한 질문이 erorr : 나는 centos에서 JasperReport 예제 코드를 컴파일하려고합니다.자바 런타임 오류 NoClassDefFoundError

내 셋업 :

/opt/jasperreports-5.6.0 
/opt/apache-ant-1.9.4 
/opt/commons-logging-1.1.3/commons-logging-1.1.3.jar 

오류 : 나는 전역 클래스 경로를 // 메이크

JAVAC := javac 
JAVA := java 
JAVA_COMPILE_LIBS = "/opt/jasperreports-5.6.0/dist/jasperreports-5.6.0.jar:." 
JAVA_RUNTIME_LIBS = "/opt/commons-logging-1.1.3/commons.logging-1.1.3.jar:${JAVA_COMPILE_LIBS}" 
TARGET := JasperReportCompile 

.PHONY: clean all run 

all: ${TARGET} 

${TARGET}: ${TARGET}.java 

%:%.java 
    ${JAVAC} -cp ${JAVA_COMPILE_LIBS} $< 

run: ${TARGET} 
    $(JAVA) -cp ${JAVA_RUNTIME_LIBS} $< 

clean: 
    rm -rf *.class 

// JasperReportCompile.java

를 설정하지 않았다

~/test/1 localhost $ make run 
javac -cp "/opt/jasperreports-5.6.0/dist/jasperreports-5.6.0.jar:." JasperReportCompile.java 
java -cp "/opt/commons-logging-1.1.3/commons-logging-1.1.3.jar:"/opt/jasperreports-5.6.0/dist /jasperreports-5.6.0.jar:."" JasperReportCompile 
Compiling Report Design ... 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
    at net.sf.jasperreports.engine.util.JRLoader.<clinit>(JRLoader.java:81) 
    at net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99) 
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:94) 
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.<init>(DefaultJasperReportsContext.java:71) 
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.<clinit>(DefaultJasperReportsContext.java:59) 
    at net.sf.jasperreports.engine.JasperCompileManager.getDefaultInstance(JasperCompileManager.java:197) 
    at net.sf.jasperreports.engine.JasperCompileManager.compileReportToFile(JasperCompileManager.java:539) 
    at JasperReportCompile.main(JasperReportCompile.java:16) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 8 more 
make: *** [run] Error 1 

import net.sf.jasperreports.engine.JRException; 
import net.sf.jasperreports.engine.JasperCompileManager; 

public class JasperReportCompile { 

    public static void main(String[] args) { 
     String sourceFileName = "~/test/1/a.xml"; 
     System.out.println("Compiling Report Design ..."); 
     try { 
     JasperCompileManager.compileReportToFile(sourceFileName); 
     } catch (JRException e) { 
     e.printStackTrace(); 
     } 
     System.out.println("Done compiling!!! ..."); 
    } 
} 

왜 클래스 경로에 아파치 공유 항아리를 추가 한 후에도 여전히이 오류가 발생하는지 알 수 없습니다. 누군가 나를 도울 수 있기를 바랍니다. 고마워.

답변

3

파일 이름이 commons.logging-1.1.3.jar 인 것 같습니다. commons-logging-1.1.3.jar이어야합니다. (점이 아님)

+0

변경 후에도 여전히 동일한 문제가 발생합니다. – lhe

+0

클래스 경로에서 따옴표를 제거하십시오. Thay가 틀린 위치에 있습니다. – Jens

관련 문제