gpt4 book ai didi

intellij-idea - REPL 突然爆发

转载 作者:行者123 更新时间:2023-12-04 06:33:48 24 4
gpt4 key购买 nike

我使用 IntelliJ + Cursive。

我正在对我正在编写的遗传算法进行一些测试,并获得了 NPE。不清楚它来自哪里,所以我启动了我的调试器。然而,当它启动时,一个 RuntimeException break 被激活,它指向这里 clojure.main :

(defn main
[& args]
(try
(if args
(loop [[opt arg & more :as args] args inits []]
(if (init-dispatch opt)
(recur more (conj inits [opt arg]))
((main-dispatch opt) args inits))) ; <---- Points Here
(repl-opt nil nil))
(finally
(flush))))

异常内容如下:
Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: create in this context, compiling:(C:\Users\slomi\AppData\Local\Temp\form-init2101329611502965041.clj:4223:33

我没有看到 create它指向的代码中任何地方的符号(这会很奇怪,因为它是 clojure.main ),我检查了我的整个项目并且该符号没有在任何地方使用。我检查了异常指向的路径,发现这个乱七八糟的:
(.deleteOnExit (java.io.File. "C:\\Users\\slomi\\AppData\\Local\\Temp\\form-init2101329611502965041.clj")) (do (set! *warn-on-reflection* nil) (do (try (clojure.core/doto (quote ai-retry.genetic_algorithm.main) clojure.core/require clojure.core/in-ns) (catch java.lang.Exception e__11808__auto__ (clojure.core/println e__11808__auto__) (clojure.core/ns ai-retry.genetic_algorithm.main))) (try (clojure.core/require (quote clojure.tools.nrepl.server)) (catch java.lang.Throwable t__11809__auto__ (clojure.core/println "Error loading" (clojure.core/str (quote clojure.tools.nrepl.server) ":") (clojure.core/or (.getMessage t__11809__auto__) (clojure.core/type t__11809__auto__))))) (try (clojure.core/require (quote complete.core)) (catch java.lang.Throwable t__11809__auto__ (clojure.core/println "Error loading" (clojure.core/str (quote complete.core) ":") (clojure.core/or (.getMessage t__11809__auto__) (clojure.core/type t__11809__auto__))))) nil) (clojure.core/let [server__11804__auto__ (clojure.tools.nrepl.server/start-server :bind "127.0.0.1" :port 0 :ack-port 58282 :handler (clojure.tools.nrepl.server/default-handler (clojure.core/with-local-vars [wrap-init-ns__11765__auto__ (clojure.core/fn [h__11766__auto__] (clojure.core/with-local-vars [init-ns-sentinel__11767__auto__ nil] (clojure.core/fn [{:as msg__11768__auto__, :keys [session]}] (clojure.core/when-not ((clojure.core/deref session) init-ns-sentinel__11767__auto__) (clojure.core/swap! session clojure.core/assoc (var clojure.core/*ns*) (try (clojure.core/require (quote ai-retry.genetic_algorithm.main)) (clojure.core/create-ns (quote ai-retry.genetic_algorithm.main)) (catch java.lang.Throwable t__11769__auto__ (clojure.core/create-ns (quote user)))) init-ns-sentinel__11767__auto__ true)) (h__11766__auto__ msg__11768__auto__))))] (clojure.core/doto wrap-init-ns__11765__auto__ (clojure.tools.nrepl.middleware/set-descriptor! {:expects #{"eval"}, :requires #{(var clojure.tools.nrepl.middleware.session/session)}}) (clojure.core/alter-var-root (clojure.core/constantly (clojure.core/deref wrap-init-ns__11765__auto__))))))) port__11805__auto__ (:port server__11804__auto__) repl-port-file__11806__auto__ (clojure.core/apply clojure.java.io/file ["C:\\Users\\slomi\\IdeaProjects\\ai-retry" ".nrepl-port"]) legacy-repl-port__11807__auto__ (if (.exists (clojure.java.io/file "C:\\Users\\slomi\\IdeaProjects\\ai-retry\\target\\base+system+user+dev")) (clojure.java.io/file "C:\\Users\\slomi\\IdeaProjects\\ai-retry\\target\\base+system+user+dev" "repl-port"))] (clojure.core/when true (clojure.core/println "nREPL server started on port" port__11805__auto__ "on host" "127.0.0.1" (clojure.core/str "- nrepl://" "127.0.0.1" ":" port__11805__auto__))) (clojure.core/spit (clojure.core/doto repl-port-file__11806__auto__ .deleteOnExit) port__11805__auto__) (clojure.core/when legacy-repl-port__11807__auto__ (clojure.core/spit (clojure.core/doto legacy-repl-port__11807__auto__ .deleteOnExit) port__11805__auto__)) (clojure.core/deref (clojure.core/promise))))

搜了一下,没有 create任何地方的符号。最接近的匹配是 create-ns 的两个实例.我假设这是一个由 REPL 出于任何原因自动生成的文件,所以无论如何我都不希望它有问题。

如果我删除该文件,则会创建一个新文件,并且在新文件中会发生同样的错误。

现在,如果我打开一个普通的非调试 REPL,我也会得到同样的错误。这完全是凭空发生的。在我第一次启动调试器之前,我已经有一个 REPL 正在运行,而且它启动得很好。该错误仅在我启动调试器后才开始,现在它不会消失。

我试过 lein clean ,手动删除临时文件,重新启动 IntelliJ 和我的电脑,并确保我的代码没有一个奇怪的编译器错误,可能以奇怪的方式表现出来。

谁能想到这可能是什么?为什么它认为有一个 Unresolved create甚至不包含 create 的文件中的符号?

最佳答案

我发现它是什么。谢谢@艾伦汤普森。

当我跑 lein run ,我得到一个错误,它在我的主文件中找不到任何可以运行的东西,这很奇怪,因为我的 main 有一个正确的 main 方法。我查看了我的 project.clj ,并意识到自从我上次启动REPL以来,我已经更改了主要位置,并且我输入了错误。

我有

:main ai-retry.genetic_algorithm.main

应该是什么时候
:main ai-retry.genetic-algorithm.main

将下划线更改为破折号可以让一切正常启动。

但是,这可能如何导致它给出的错误超出了我的范围。我将把它留在这里,以防将来有人不得不处理这个问题。

关于intellij-idea - REPL 突然爆发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44729767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com