: eval in: nrepl은 두 번째 jvm를 계속 시작합니다.
6930 단어 leiningen
묘사
나는lein repl
를 실행하고 프로젝트 설정에서 lein run
로 실행:eval-in :nrepl
을 한다.코드는 확실히 nrepl 서버에서 평가를 진행했습니다. 왜냐하면 나는 repl에서 결과를 볼 수 있기 때문입니다.그러나 이 과정에서 두 개의 JVM이 시작되었는데 하나는 라인에 사용되고 다른 하나는 다른 것에 사용되었다. (적어도 나에게는 의외였다.)nrepl 서버가 실행되면 grenchman이나quick clojure를 사용하면 추가 jvm를 시작할 필요가 없다는 생각입니다.그러나 jvm는 여전히 이 미달의 열반으로 통하는 길에 있다.이 jvm의 의미는 무엇입니까?토론 #1
이걸 복사할 수 없습니다.그렇게 지도 모른다, 아마, 아마...토론 #2
[loscar@localhost ~]$ lein --version
Leiningen 2.4.2 on Java 1.7.0_60 OpenJDK Server VM
[loscar@localhost ~]$ pacman -Qs clojure
local/clojure 1.6.0-1
LISP dialect for the JVM
local/leiningen 1:2.4.3-1
Automating Clojure projects without setting your hair on fire.
[loscar@localhost ~]$ quick lein new app my-app
[loscar@localhost ~]$ cd my-app/
[loscar@localhost my-app]$ vim project.clj
[loscar@localhost my-app]$ cat project.clj
(defproject my-app "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.6.0"]]
:main ^:skip-aot my-app.core
:target-path "target/%s"
:eval-in :nrepl
:profiles {:uberjar {:aot :all}})
[loscar@localhost my-app]$ lein repl
nREPL server started on port 37138 on host 127.0.0.1 - nrepl://127.0.0.1:37138
그런 다음 다른 터미널에서 다음을 수행합니다.[loscar@localhost ~]$ cd my-app/
[loscar@localhost my-app]$ lein run
[loscar@localhost my-app]$ lein run
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
Hello, World!
어느 시점에서 나는 4개의 JVM이 실행되고 있고 2개는 리플에서 실행되고 2개는 실행되는 것을 볼 수 있다.빠른 검사의 경우 선택된 JAVA 옵션 2개를 확인합니다.정보.내 환경 설정 때문에, jvm가 시작될 때마다 이 내용을 표시합니다.토론 #셋
에 대한 설명은 어떤 이유로든 연결할 포트를 확정할 수 없다는 것이다.포트 파일을 읽을 수 없으면 IIRC가 자동으로 반환:subprocess
됩니다.토론 #4
혹시 모르니까 이따가 다시 테스트할게요.그러나 제 첫 번째 논평에서 리플이 nrepl 프로세스에 대한 변경 사항에 영향을 받았다는 것을 지적했습니다. (즉, 일부 DEF는 볼 수 있습니다.)토론 #5
아, 맞다.심지어 낯선 사람.너는~/.lein/profiles.clj
를 옮겨서 그것이 계속 존재할 수 있는지 없는지를 볼 수 있니?lein을 시작하기 전에 셸에 설정해 보십시오 export DEBUG=y
.다른 분들은 이거 복사해도 돼요?
토론 #6
응...없음~/.lein/profiles.clj
.어떻게 여는지 보여주세요DEBUG
:1호 터미널
[loscar@localhost ~]$ lein new app my-app
Leiningen's classpath: /home/loscar/.lein/self-installs/leiningen-2.4.2-standalone.jar
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
Applying task new to [app my-app]
Generating a project called my-app based on the 'app' template.
[loscar@localhost ~]$ cd my-app/
[loscar@localhost my-app]$ e project.clj
[loscar@localhost my-app]$ cat project.clj
(defproject my-app "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.6.0"]]
:main ^:skip-aot my-app.core
:target-path "target/%s"
:eval-in :nrepl
:profiles {:uberjar {:aot :all}})
[loscar@localhost my-app]$ export DEBUG=y
[loscar@localhost my-app]$ lein repl
Leiningen's classpath: /home/loscar/.lein/self-installs/leiningen-2.4.2-standalone.jar
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
Applying task repl to []
Applying task javac to nil
Running javac with [@/tmp/.leiningen-cmdline7187668393942607949.tmp]
Applying task compile to nil
All namespaces already AOT compiled.
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
nREPL server started on port 46285 on host 127.0.0.1 - nrepl://127.0.0.1:46285
REPL-y 0.3.1
Clojure 1.6.0
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
my-app.core=>
2호 터미널[loscar@localhost ~]$ cd my-app/
[loscar@localhost my-app]$ export DEBUG=y
[loscar@localhost my-app]$ lein run
Leiningen's classpath: /home/loscar/.lein/self-installs/leiningen-2.4.2-standalone.jar
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
Applying task run to []
Applying task javac to nil
Running javac with [@/tmp/.leiningen-cmdline8500511300982643214.tmp]
Applying task compile to nil
All namespaces already AOT compiled.
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
Hello, World!
HIH토론 #7
도 마찬가지로 nrepl의 평가가 진행 중인지 테스트해 보겠습니다.[loscar@localhost my-app]$ e src/my_app/core.clj
[loscar@localhost my-app]$ cat src/my_app/core.clj
(ns my-app.core
(:gen-class))
(def do-you-see-me true)
(defn -main
"I don't do a whole lot ... yet."
[& args]
(println "Hello, World!"))
[loscar@localhost my-app]$ cat .nrepl-port
46285
[loscar@localhost my-app]$ lein run
Leiningen's classpath: /home/loscar/.lein/self-installs/leiningen-2.4.2-standalone.jar
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
Applying task run to []
Applying task javac to nil
Running javac with [@/tmp/.leiningen-cmdline8569029413199734963.tmp]
Applying task compile to nil
All namespaces already AOT compiled.
Picked up _JAVA_OPTIONS: -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.useSystemAAFontSettings=gasp
Hello, World!
[loscar@localhost my-app]$
리플에서 다음을 수행합니다.my-app.core=> do-you-see-me
CompilerException java.lang.RuntimeException: Unable to resolve symbol: do-you-see-me in this context, compiling:(/tmp/form-init3619513032698516429.clj:1:886)
나는 어제 이 효과가 매우 좋았다고 맹세했다.당신의 건의에 따라 연결을 구축하는 데 문제가 있을 수 있습니다.토론 #8
가 곧 끝날 것입니다. 그러나 그것을 복제하는 절차를 찾을 수 있다면 마음대로 다시 열어 주십시오.토론 #9
네, @technomancy. 오늘 저녁에 다시 테스트해서 결과를 알려드리겠습니다.토론 #10
이게 마지막master
인가요?내가 봤어repl-port
slurped이지 .nrepl-port
...그냥 훑어봤는데...이것은 완전히 잘못된 단언일 수도 있다. 미소:
Reference
이 문제에 관하여(: eval in: nrepl은 두 번째 jvm를 계속 시작합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/technomancy/leiningen/issues/1600텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)