如果这让你感觉我固执己见,但我在尝试有条理地解决问题(“这是发生的,这是我所缺少的必要信息”)而不是从一个解决方案(“只需更改一些代码”)开始,以确保我们是在做正确的事情。
截至目前,您尚未描述一个详细、可重复的场景来重现实际的问题。没有这一点,我们无法进行以下操作:a) 考虑其他可能的解决方案或b) 测试和验证某个特定更改是否解决了问题。您声称这个问题既常见又被广泛报道。如果是这样,应该很容易指向这些讨论之一或描述场景,这正是我所寻求的。
我曾尝试使用tools.namespace工具来重现这种错误,唯一的方法是在REPL中使用require,重新改变这一信息并不会给我带来更多额外的信息。
user=> (require '[foo :as bar])
执行错误(IllegalStateException)在用户/eval1664(REPL:1)发生。
别名bar已经在user命名空间中存在,正在别名foo
请注意,在Clojure 1.10.0及以后的版本中,堆栈跟踪的顶部行不会在这里打印出来,因此您看不到“命名空间”(tools.namespace的README.txt中的示例较老)。说“别名bar(本应指代foo)在user命名空间中已存在,正在别名foo”在理解或解决问题时并没有提供更多信息,对吗?