lein repl
по проекту:AWT/Swing разбивает 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, это происходит на:
РЕПЛ-й 0.3.7, 0.2.12 nREPL
Clojure 1.8.0
Java HotSpot (TM) 64-разрядного сервера VM 1.8.0_121-b13
Windows 10 Pro x64
Я также попытался сделать uberjar, и он работает нормально.
Так что, похоже, только сбой lein repl
и REPL CIDER (так я предполагаю nREPL?).
Как я могу диагностировать и решать это?
Возможный дубликат [Что вызывает мой java.net.SocketException: соединение сброшено?] (Http://stackoverflow.com/questions/585599/whats-causing-my-java-net-socketexception-connection-reset) –
@HovercraftFullOfEels afaik lein создает 2 JVM, один для себя и один для программы, и это происходит, когда программа выходит из строя, поэтому соединение закрывается. Я думаю, что в любом случае это не имеет значения, поскольку единственное, что существует, это тип исключения. – MasterMastic
Я не специалист в этом типе исключений, поэтому я не «задушил» ваш вопрос, но я знаю, что исключение может возникнуть, когда сокет закрыт с другой стороны. –