当我尝试运行我创建的jar文件时出现此错误:线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / log4j / Appender

时间:2015-07-14 22:16:47

标签: log4j noclassdeffounderror appender

当我尝试运行我为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)

1 个答案:

答案 0 :(得分:0)

我收到此错误是因为我没有正确构建jar文件。所以我做的是创建了一个可执行jar文件,并在创建jar时复制了源代码。这就是问题得到解决的方法。