: 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-portslurped이지 .nrepl-port...그냥 훑어봤는데...이것은 완전히 잘못된 단언일 수도 있다. 미소:

좋은 웹페이지 즐겨찾기