当我尝试运行我为java应用程序创建的jar文件时,我收到异常。我使用log4j进行日志记录,并创建了一个记录每个cron作业事务的自定义日志。 然后我编写了一个shell脚本,我调用了jar文件。我已将属性文件放在jar文件之外。
我通过shell脚本运行jar文件。我使用的命令是 java -jar app.jar $ 1
java应用程序有2个属性文件 1)app.properties 2)sublog4j.properties
sublog4j属性文件包含如下数据:
log4j.appender.log = package.CustomFileAppender log4j.appender.log.File = / SERVERPATH / error.log中
我有一种直觉,因为package.CustomFileAppender我收到了错误。它是app.jar中的java文件,但我不知道如何创建自定义appender并在外部属性文件中使用它。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Appender
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
at java.lang.Class.getMethod0(Class.java:2856)
at java.lang.Class.getMethod(Class.java:1668)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Appender
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)
答案 0 :(得分:0)
我收到此错误是因为我没有正确构建jar文件。所以我做的是创建了一个可执行jar文件,并在创建jar时复制了源代码。这就是问题得到解决的方法。