2013-10-15 36 views
1

与我的earlier question类似。Eclipse尝试调试clojure项目时挂起

尝试调试Clojure项目时,Eclipse挂起。之前我在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)))) 
    ) 
) 
+0

我知道现在我回答不同的问题,但:1),你应该使用emacs编写的Clojure代码。 2)你真的不需要“调试器”,你有你的REPL(和emacs发送代码到这个repl)。 3)你真的不想写这个可怕的SQL - http://www.sqlkorma.com/例如 – iced

+0

@冰 - Korma看起来很有趣。在我的工作场所,所有代码(包括SQL)必须在授权安装到生产环境之前提交审核。有没有一种方法可以提取Korma生成的SQL,以便在安装之前进行审查?这需要全部SQL,包括DDL和DML。谢谢。 –

回答

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

+0

谢谢!我会看看它。 –