Ошибка запуска приложения Hello World с использованием spacemacs и clojure - PullRequest
0 голосов
/ 12 апреля 2020
(ns myname.myapp
  (:gen-class))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
   (println "Hello, World!"))

Выполнение команды «оценить последнее сексуальное выражение» с маркером на (println "Hello, World!") вызвало следующую ошибку:

Show: Project-Only All 
Hide: Clojure Java REPL Tooling Duplicates  (15 frames hidden)

2 Unhandled clojure.lang.Compiler$CompilerException
   Error compiling src/myname/myapp.clj at (0:0)
   #:clojure.error{:phase :compile-syntax-check,
                   :line 0,
                   :column 0,
                   :source "/Users/*/dev/myapp/src/myname/myapp.clj"}
             Compiler.java: 6808  clojure.lang.Compiler/analyze
             Compiler.java: 6745  clojure.lang.Compiler/analyze
             Compiler.java: 7181  clojure.lang.Compiler/eval
             Compiler.java: 7132  clojure.lang.Compiler/eval
                  core.clj: 3216  clojure.core/eval
                  core.clj: 3212  clojure.core/eval
    interruptible_eval.clj:   91  nrepl.middleware.interruptible-eval/evaluate/fn
                  main.clj:  437  clojure.main/repl/read-eval-print/fn
                  main.clj:  437  clojure.main/repl/read-eval-print
                  main.clj:  458  clojure.main/repl/fn
                  main.clj:  458  clojure.main/repl
                  main.clj:  368  clojure.main/repl
               RestFn.java:  137  clojure.lang.RestFn/applyTo
                  core.clj:  665  clojure.core/apply
                  core.clj:  660  clojure.core/apply
                regrow.clj:   20  refactor-nrepl.ns.slam.hound.regrow/wrap-clojure-repl/fn
               RestFn.java: 1523  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   84  nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:   56  nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:  155  nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
                  AFn.java:   22  clojure.lang.AFn/run
               session.clj:  190  nrepl.middleware.session/session-exec/main-loop/fn
               session.clj:  189  nrepl.middleware.session/session-exec/main-loop
                  AFn.java:   22  clojure.lang.AFn/run
               Thread.java:  832  java.lang.Thread/run
1 Caused by java.lang.RuntimeException
   Unable to resolve symbol: World! in this context

                 Util.java:  221  clojure.lang.Util/runtimeException
             Compiler.java: 7414  clojure.lang.Compiler/resolveIn
             Compiler.java: 7358  clojure.lang.Compiler/resolve
             Compiler.java: 7319  clojure.lang.Compiler/analyzeSymbol
             Compiler.java: 6768  clojure.lang.Compiler/analyze
             Compiler.java: 6745  clojure.lang.Compiler/analyze
             Compiler.java: 7181  clojure.lang.Compiler/eval
             Compiler.java: 7132  clojure.lang.Compiler/eval
                  core.clj: 3216  clojure.core/eval
                  core.clj: 3212  clojure.core/eval
    interruptible_eval.clj:   91  nrepl.middleware.interruptible-eval/evaluate/fn
                  main.clj:  437  clojure.main/repl/read-eval-print/fn
                  main.clj:  437  clojure.main/repl/read-eval-print
                  main.clj:  458  clojure.main/repl/fn
                  main.clj:  458  clojure.main/repl
                  main.clj:  368  clojure.main/repl
               RestFn.java:  137  clojure.lang.RestFn/applyTo
                  core.clj:  665  clojure.core/apply
                  core.clj:  660  clojure.core/apply
                regrow.clj:   20  refactor-nrepl.ns.slam.hound.regrow/wrap-clojure-repl/fn
               RestFn.java: 1523  clojure.lang.RestFn/invoke
    interruptible_eval.clj:   84  nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:   56  nrepl.middleware.interruptible-eval/evaluate
    interruptible_eval.clj:  155  nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
                  AFn.java:   22  clojure.lang.AFn/run
               session.clj:  190  nrepl.middleware.session/session-exec/main-loop/fn
               session.clj:  189  nrepl.middleware.session/session-exec/main-loop
                  AFn.java:   22  clojure.lang.AFn/run
               Thread.java:  832  java.lang.Thread/run

Как мне решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Я предполагаю, что вы не поместили курсор сразу после выражения, которое хотели оценить. "Evaluate last sexp" должен вызываться, когда курсор находится сразу после формы, которую вы хотите оценить.

Вот более наглядное объяснение. Чтобы команда работала, ваш курсор (представленный как |) должен быть здесь:

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
   (println "Hello, World!")|)

или здесь:

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
   (println "Hello, World!"))|

Вы также можете попробовать "eval defun" ("defun "означает форму верхнего уровня в lin go) CIDER или" eval buffer ". С этими командами легче работать для новичков в Clojure / Lisp.

0 голосов
/ 12 апреля 2020

Что-то пошло не так с вашей оценкой формы. Это сообщение об ошибке:

1 Caused by java.lang.RuntimeException
   Unable to resolve symbol: World! in this context

означает, что компилятор видит символы World! без окружающих двойных кавычек, поэтому он ищет несуществующую переменную с таким именем.


Может быть проще начать с использования lein run и lein test для запуска / тестирования вашего кода. Вы также можете клонировать этот пример проекта , который включает в себя плагин lein-test-refresh, что даже лучше, чем повтор IMHO.

...