devappserver.sh에서 작동하는 webapp (appengine-magic 및 lein으로 작성)을 webapp로 가져 왔지만 더 많은 상호 작용이 필요하고 repl을 사용하는 서버를 다시 시작할 필요가 없어졌습니다. (에서-NS 'myapp.core) 나는 또한 시도거의 만족했지만 repl에 null 포인터가 생겼습니다.
[Thrown class java.lang.NullPointerException]
Backtrace:
0: java.io.File.<init>(File.java:360)
1: sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
2: sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
3: sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
4: java.lang.reflect.Constructor.newInstance(Constructor.java:513)
5: clojure.lang.Reflector.invokeConstructor(Reflector.java:160)
6: appengine_magic.core$start.doInvoke(core_local.clj:85)
7: clojure.lang.RestFn.invoke(RestFn.java:439)
8: appengine_magic.core$serve.doInvoke(core_local.clj:139)
9: clojure.lang.RestFn.invoke(RestFn.java:410)
10: user$eval2264.invoke(NO_SOURCE_FILE:1)
11: clojure.lang.Compiler.eval(Compiler.java:5424)
12: clojure.lang.Compiler.eval(Compiler.java:5391)
13: clojure.core$eval.invoke(core.clj:2382)
14: swank.commands.basic$eval_region.invoke(basic.clj:47)
15: swank.commands.basic$eval_region.invoke(basic.clj:37)
16: swank.commands.basic$eval807$listener_eval__808.invoke(basic.clj:71)
17: clojure.lang.Var.invoke(Var.java:365)
18: user$eval2262.invoke(NO_SOURCE_FILE)
19: clojure.lang.Compiler.eval(Compiler.java:5424)
20: clojure.lang.Compiler.eval(Compiler.java:5391)
21: clojure.core$eval.invoke(core.clj:2382)
22: swank.core$eval_in_emacs_package.invoke(core.clj:92)
23: swank.core$eval_for_emacs.invoke(core.clj:239)
24: clojure.lang.Var.invoke(Var.java:373)
25: clojure.lang.AFn.applyToHelper(AFn.java:167)
26: clojure.lang.Var.applyTo(Var.java:482)
27: clojure.core$apply.invoke(core.clj:540)
28: swank.core$eval_from_control.invoke(core.clj:99)
29: swank.core$eval_loop.invoke(core.clj:104)
30: swank.core$spawn_repl_thread$fn__493$fn__494.invoke(core.clj:309)
31: clojure.lang.AFn.applyToHelper(AFn.java:159)
32: clojure.lang.AFn.applyTo(AFn.java:151)
33: clojure.core$apply.invoke(core.clj:540)
34: swank.core$spawn_repl_thread$fn__493.doInvoke(core.clj:306)
35: clojure.lang.RestFn.invoke(RestFn.java:397)
36: clojure.lang.AFn.run(AFn.java:24)
37: java.lang.Thread.run(Thread.java:680)
하지만 같은 효과 : 이제 문제는 내가 (require '[appengine-magic.core :as ae])
, (use 'myapp.core)
을하고 응용 프로그램 (ae/serve myapp)
를 제공하려고 후 나는이 예외를 얻을 것이다. repl에 똑바로 웹 응용 프로그램 처리기를 붙여 넣으면 작동하지만 내 파일에서는 작동하지 않습니다. 정말 잘 네임 스페이스에 있어야하므로 MyApp를 또는 myapp와 핸들러는 명확하게 "객체"를 제공 호출
...
project.clj는
(defproject myapp "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [
[org.clojure/clojure "1.2.1"]
[compojure "0.6.2"]
]
:dev-dependencies [
[appengine-magic "0.4.1"]
[ring/ring-devel "0.3.7"]
])
core.clj은 단지 간단하다 :
(ns myapp.core
(:use compojure.core)
(:require [appengine-magic.core :as ae]))
(defroutes myapp-handler
(GET "/" req
{:status 200
:headers {"Content-Type" "text/plain"}
:body "Hello, world!!!"}))
(ae/def-appengine-app myapp #'myapp-handler)
아마도 stacktrace (코드를 포함하는 부분)가 많을수록 더 도움이 될 수 있습니다. 프로젝트를 위해 project.clj (leiningen이라고 가정)를 가지고 있다면 이것을 재현하는 것이 더 쉬울 것입니다. –
이것은 emacs에서 얻을 수있는 모든 stacktrace이며 프로젝트 파일은 매우 간단합니다. 랩 재 장전을 위해 링을 devel했지만,이 경우에는 사용하지 마십시오. – MarkokraM
나는이 오류를 해결하는 방법에 관해서도 같은 오류가 발생했다고 말해야한다. – toofarsideways