AWT / Swing崩溃了REPL

时间:2017-02-01 14:31:39

标签: java swing clojure awt leiningen

lein repl项目:

user=> (javax.swing.JFrame. "My Frame")
SocketException Connection reset
        java.net.SocketInputStream.read (SocketInputStream.java:209)
        java.net.SocketInputStream.read (SocketInputStream.java:141)
        java.io.BufferedInputStream.fill (BufferedInputStream.java:246)
        java.io.BufferedInputStream.read (BufferedInputStream.java:265)
        java.io.FilterInputStream.read (FilterInputStream.java:83)
        java.io.PushbackInputStream.read (PushbackInputStream.java:139)
        clojure.tools.nrepl.bencode/read-byte (bencode.clj:84)
        clojure.tools.nrepl.bencode/read-byte (bencode.clj:-1)
        clojure.tools.nrepl.bencode/read-token (bencode.clj:236)
        clojure.tools.nrepl.bencode/read-token (bencode.clj:234)
        clojure.tools.nrepl.bencode/read-bencode (bencode.clj:254)
        clojure.tools.nrepl.bencode/read-bencode (bencode.clj:251)
Bye for now!

然而,对于没有项目的新项目/ lein repl,它确实有效。

user=> (javax.swing.JFrame. "My Frame")
#object[javax.swing.JFrame 0x2ee69c3e "javax.swing.JFrame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,title=My Frame,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]"]

我更新了我的JDK和JRE,但它没有帮助。

我在尝试使用跷跷板时最初注意到它(跷跷板和Clojure是我唯一的项目依赖项)。它崩溃了然后我注意到即使尝试直接使用Swing也会导致崩溃。从依赖项中删除跷跷板使其再次起作用。现在我的项目有其他依赖项(没有一个与AWT / Swing有关,所有这些都是:clojure 1.8.0,clj-http 2.3.0,data.json 0.2.6,camel-snake-kebab 0.4.0 ,并且clj-time 0.13.0)并且它再次发生。我会试着看看能否找到最小的案例 编辑:最小的情况是只有Clojure和[clj-http" 2.3.0"]或只有Clojure和跷跷板。

我还试图确保我从EDT(使用EventQueue.invokeLater)运行,但它没有帮助,程序崩溃了。

然后我尝试了AWT (java.awt.Frame.)并且我遇到了同样的崩溃。

最后,fwiw,这发生在:
REPL-y 0.3.7,nREPL 0.2.12
Clojure 1.8.0
Java HotSpot(TM)64位服务器VM 1.8.0_121-b13
Windows 10 Pro x64

我现在也尝试做一个uberjar,它似乎工作正常 所以它似乎只会使lein repl和CIDER的REPL崩溃(所以我假设是nREPL?)。

我该如何诊断并解决这个问题?

1 个答案:

答案 0 :(得分:0)

我无法在最小项目上重现它

(defproject km "0.1.0-SNAPSHOT"
   :dependencies [
     [org.clojure/clojure "1.8.0"]
     [clj-http "2.3.0"]
   ]
)

Clojure 1.8.0 Java HotSpot(TM)64位服务器VM 1.8.0_112-b16 REPL-y 0.3.7,nREPL 0.2.12 MacOS Sierra

你在'project.clj'中有更多行吗?