Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging clojure工具日志记录的NoClassDefFoundError_Logging_Clojure_Log4j_Noclassdeffounderror - Fatal编程技术网

Logging clojure工具日志记录的NoClassDefFoundError

Logging clojure工具日志记录的NoClassDefFoundError,logging,clojure,log4j,noclassdeffounderror,Logging,Clojure,Log4j,Noclassdeffounderror,我正在为web应用程序使用clojure.tools.logging。使用org.clojure/tools.logging“0.1.2”,它可以长期正常工作。我启动并停止clojure repl[lein repl],然后多次重新启动clojure repl,以进行开发测试。突然,repl抛出以下错误。我将日志库更新为org.clojure/tools.logging“0.2.3”,但没有任何用处。我仍然得到了相同的错误,它只在repl上给出了这个错误,但是,随着应用程序的运行,日志可以正常工

我正在为web应用程序使用clojure.tools.logging。使用
org.clojure/tools.logging“0.1.2”
,它可以长期正常工作。我启动并停止clojure repl[
lein repl
],然后多次重新启动clojure repl,以进行开发测试。突然,repl抛出以下错误。我将日志库更新为
org.clojure/tools.logging“0.2.3”
,但没有任何用处。我仍然得到了相同的错误,它只在repl上给出了这个错误,但是,随着应用程序的运行,日志可以正常工作。我不知道问题出在哪里

我将lo4j与clojure.tools.logging一起使用

java.lang.NoClassDefFoundError: clojure/tools/logging/impl/LoggerFactory (NO_SOURCE_FILE:0)

我会先尝试leinclean,然后尝试leindeps,然后尝试leincompile,最后尝试leinrepl。如果这不起作用,我下一步会尝试手动删除lib和classes目录,然后运行lein deps、lein compile,然后再次运行lein repl。

在project.clj文件中添加到:aot对我很有效

:aot [clojure.tools.logging.impl ...]

我知道这是一个老问题,但我只是遇到了同样的问题,显然~/.lein/profiles.clj与log4j也有一些冲突。
我已经完全清除了它,它开始工作。

糟糕,您的代码是否直接引用clojure.tools.logging.impl.LoggerFactory?如果是这样,请找到clojure日志jar并将其作为zip存档打开,然后查找LoggingFactory类。如果它存在,但在不同的包中,则更新代码。如果它不在那里,那么你必须研究用什么来代替它。如果您的代码没有引用它,并且它不在jar文件中,那么很可能项目中存在错误,您应该询问维护人员。另外,您可以发布项目clj文件中的依赖项吗?类文件不在日志jar中,因为LoggerFactory是一个defprotocol。它应该在读取impl.clj时生成。对我来说,问题在于代码的加载顺序。添加一个提前编译clojure.tools.logging.impl命名空间的指令修复了我的问题。前几天我在leiningen遇到了一个问题,我有两个aot类,一个依赖于另一个,并且在project.clj文件中错误地指定了顺序。取决于发生了什么,有时我可以让它工作,有时不行。一旦我意识到问题出在哪里,我就修复了project.clj文件,不再有问题了。我也为自己工作。也许应该是公认的答案。我在构建和运行uberjar时无法实现这一点