Logback 1.1.7
这是在"生产" run:来自Exception
的堆栈跟踪(实际上NoClassDefFoundError
是Error
):
Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover$ArhiveRemoverRunnable
at ch.qos.logback.core.rolling.helper.TimeBasedArchiveRemover.cleanAsynchronously(TimeBasedArchiveRemover.java:231)
at ch.qos.logback.core.rolling.TimeBasedRollingPolicy.rollover(TimeBasedRollingPolicy.java:178)
at ch.qos.logback.core.rolling.RollingFileAppender.attemptRollover(RollingFileAppender.java:204)
at ch.qos.logback.core.rolling.RollingFileAppender.rollover(RollingFileAppender.java:183)
at ch.qos.logback.core.rolling.RollingFileAppender.subAppend(RollingFileAppender.java:224)
at ch.qos.logback.core.OutputStreamAppender.append(OutputStreamAppender.java:100)
所以我查看了源代码:类ArhiveRemoverRunnable
确实存在于.java文件中,它应该在l上实例化。 231(错误拼写)......
然后我解压缩了可执行jar(logback-core-1.1.7.jar):同样,包中存在 TimeBasedArchiveRemover $ ArhiveRemoverRunnable.class 文件,文件 TimeBasedArchiveRemover也是如此。类
这种错误通常不会发生:很明显,当"滚动"记录器决定是时候清理目录了。
任何人都知道为什么会这样?令人不安的是,我没有发现任何其他人遇到这种情况的证据......!
答案 0 :(得分:0)
潜在的解决方法(待定):
我认为对此的答案可能是提取此.jar的源文件,编辑有问题的类,编译并重新打包为可执行jar,然后使用而不是下载的jar。为了做到这一点,我在Eclipse中启动了一个新的Gradle项目,导入了整个源代码包等。这个东西在Eclipse-with-Gradle中编译(构建)OK,没有任何关于" NoClassDef"键入...
但我实际上制作这个可执行jar有困难。能够完成它是一件好事:能够以某种方式调整和测试下载的依赖项(如果真的有必要)。
当前不太令人满意的解决方法:
事实上,我不需要基于时间的"档案移除。我很高兴根据日志记录目录中所有文件的大小删除档案。 This answer似乎可以解决这个问题。然而,logback是一个野兽:我不完全确定:"存档删除"与"翻转"?
相同如果再次出现 <?php
if (has_post_thumbnail()) { ?>
<?php the_post_thumbnail(); ?>
<?php }
else { ?>
<img src="<?php echo first_image_as_featured(); ?>" />
<?php
}
?>
,我必须使用一种特殊的实用工具方法来记录Error
内的每个LOGGER.xxx
命令。