2013-10-15 35 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

謝謝!我會看看它。 –