在尝试调试clojure项目时,Eclipse会挂起

时间:2013-10-15 12:06:43

标签: eclipse clojure counterclockwise

与我的earlier question类似。

Eclipse在尝试调试Clojure项目时挂起。早些时候我在Windows 8上使用Eclipse Kepler,现在在Windows XP上使用Eclipse Juno也是如此。 Eclipse错误日志包含以下相关条目(最早在顶部):

07:30 (Info)  Started ccw nREPL server: nrepl://127.0.0.1:1581
07:30 (Info)  Starting REPL with program args: -i "/C:/Documents and Settings/bjarvis/My Documents/Java/eclipse/configuration/org.eclipse.osgi/bundles/804/1/.cp/ccw/debug/serverrepl.clj" -e "(require 'clojure.tools.nrepl.server)(do (clojure.tools.nrepl.server/start-server :ack-port 1581) nil)"  
07:30 (Info)  Adding to project's classpath to support nREPL: [C:\Documents and Settings\bjarvis\My Documents\Java\eclipse\plugins\ccw.core_0.20.0.STABLE001\tools.nrepl-0.2.1.jar]
07:31 (Error) Waiting for new REPL process ack timed out
07:31 (Error) Waiting for new REPL process ack timed out

我注意到的一件奇怪的事情是,在第一次崩溃后,项目右键菜单中的“Leiningen”和“Clojure”条目消失了,所以我认为CCW“崩溃”或消失了或者???退出Eclipse并再次启动它会恢复这些菜单项。

我意识到这里的信息不多,但是有没有人有任何想法?请注意,调试器工作正常几天 - 然后今天早上问题就开始了。另请注意,我可以通过使用Ctrl-Alt-S“发送”到REPL来成功运行此文件。

FWIW,我正在尝试调试的文件是:

(ns myproject.core
  (:require [clojure.java.jdbc :as jdbc]) )

(defn foo [str]
  (println str "Hello, World!")
)

(defn hello [who]
  (str "Hello " who "!"))

(defn db-test []
    (let [db-path "c:/derby/testdb1"]
      (def db {:classname "org.apache.derby.jdbc.EmbeddedDriver"
               :subprotocol "derby"
               :subname db-path
               :create true})

      (println db)

      ; Create a table named TESTTABLE here and insert some data

      (jdbc/db-do-commands db false
        "CREATE TABLE TESTTABLE
           (ID_TT    BIGINT
              NOT NULL
              GENERATED ALWAYS AS IDENTITY
              CONSTRAINT PK_TESTTABLE
                PRIMARY KEY,
            NAME     VARCHAR(10),
            ADDRESS  VARCHAR(20))"
        "INSERT INTO TESTTABLE (NAME, ADDRESS)
           VALUES ('Bob',  'Home'),
                  ('Jack', 'Top Of The Hill'),
                  ('Elmo', 'Dumpster')"
      )

      ; Query the database to see what you find

      (jdbc/with-connection db 
         (jdbc/with-query-results rs ["SELECT * FROM TESTTABLE"] 
           ; rs will be a sequence of maps, 
           ; one for each record in the result set. 
           (dorun (map #(println (:title %)) rs))))
    )
)

1 个答案:

答案 0 :(得分:0)

如果您愿意尝试其他IDE,我的经验是调试Clojure在IntelliJ中的效果非常好,也许这会对您有所帮助。有一个免费的EAP版本,您可以与La Clojure插件一起使用(它最适用于IntelliJ版本13)。 http://confluence.jetbrains.com/display/IDEADEV/IDEA+13+EAP

以下博客介绍了如何使用IntelliJ进行调试:http://blog.tomeklipski.com/2013/04/running-and-debugging-clojure-code-with.html