2024年Clojure状态调查!中分享你的想法。

欢迎!请查看关于页面以获得更多关于这个工作原理的信息。

+7投票
Clojure

根据Slack(和其他地方)的线程,自动加载user.clj似乎是一个会经常困扰人们的“成问题的行动”,因此当运行Clojure进程时,似乎有一个选项可以禁用它将是很好的。

就在今天,有人测试了Clojure 1.12 Alpha 2的add-lib功能,但是它没有工作,因为他们有一个打印信息的user.clj,而新的invoke-tool API不喜欢user.clj出现的额外输出。

1 答案

0投票

我想要更多地了解实际的问题。

这是导致我最终创建这个问询的Slack上的特定线程

https://clojurians.slack.com/archives/C03RZGPG3/p1681479315972099

但我也看到很多人在段时间内遇到了由自动加载user.clj导致的问题,这些问题的调试往往很困难。这是另一个线程

https://clojurians.slack.com/archives/C053AK3F9/p1678794628860199

我猜每个月大约会看到一次在 Slack 上有人遇到与它相关的一些意外问题(我刚刚搜索到了去年中旬)。有时他们会在 src 目录下有一个 user.clj 文件,意图将其放入具体的开发相关工具中,并在尝试运行自己的程序时被加载,更糟糕的是,还被构建到应用程序 JAR 文件中并在非开发环境中运行——因为不太清楚正确使用它的方法是将其放在像 dev/user.clj 这样的地方,并使用别名(或者 Leiningen 的配置文件)来确保只在需要时加载。

我的想法是在 JVM 属性中关闭自动加载可能有助于更轻松地调试这些情况,并提供一种确保意外包装在第三方库中的 user.clj 不会破坏您应用程序的方法。
...