#java
#java
Вопрос:
парень. У меня вопрос об ошибке связывания среды выполнения java: я пытаюсь скомпилировать пример кода JasperReport в centos.
моя настройка:
/opt/jasperreports-5.6.0
/opt/apache-ant-1.9.4
/opt/commons-logging-1.1.3/commons-logging-1.1.3.jar
и ошибки:
~/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
Я не установил глобальный путь к классу
// Makefile
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}
lt;
run: ${TARGET}
$(JAVA) -cp ${JAVA_RUNTIME_LIBS}
lt;
clean:
rm -rf *.class
// JasperReportCompile.java
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!!! ...");
}
}
Я не понимаю, почему я все еще получаю эту ошибку после того, как я добавил apache commons jar в путь к классу. Надеюсь, кто-нибудь сможет мне помочь. большое спасибо.
Ответ №1:
Я предполагаю, что имя commons.logging-1.1.3.jar
файла неверно. Так и должно быть commons-logging-1.1.3.jar
. (не с Точкой)
Комментарии:
1. все та же проблема после изменения этого.
2. удалите кавычки из classpath. Они находятся в неправильном положении.