运行命令时,我收到以下堆栈跟踪:puts "Press Enter to continue or ESC to quit..."
begin
system("stty raw -echo")
decision = STDIN.getc
ensure
system("stty -raw echo")
end
if decision.ord != 27
puts "do this stuff"
else
puts "bye"
end
堆栈跟踪
lein run "this is the other different thing" "this,different,other"
这是我的代码:
Exception in thread "main" java.lang.NullPointerException, compiling:(/private/var/folders/y8/6lt_81xn47d4n2k641z52rg00000gn/T/form-init8328218573408236617.clj:1:125)
at clojure.lang.Compiler.load(Compiler.java:7391)
at clojure.lang.Compiler.loadFile(Compiler.java:7317)
at clojure.main$load_script.invokeStatic(main.clj:275)
at clojure.main$init_opt.invokeStatic(main.clj:277)
at clojure.main$init_opt.invoke(main.clj:277)
at clojure.main$initialize.invokeStatic(main.clj:308)
at clojure.main$null_opt.invokeStatic(main.clj:342)
at clojure.main$null_opt.invoke(main.clj:339)
at clojure.main$main.invokeStatic(main.clj:421)
at clojure.main$main.doInvoke(main.clj:384)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.NullPointerException
at clojure.string$replace.invokeStatic(string.clj:101)
at clojure.string$replace.invoke(string.clj:75)
at redact.core$redact_doc.invokeStatic(core.clj:12)
at redact.core$redact_doc.invoke(core.clj:7)
at redact.core$_main.invokeStatic(core.clj:54)
at redact.core$_main.doInvoke(core.clj:50)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at user$eval5.invokeStatic(form-init8328218573408236617.clj:1)
at user$eval5.invoke(form-init8328218573408236617.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6927)
at clojure.lang.Compiler.eval(Compiler.java:6917)
at clojure.lang.Compiler.load(Compiler.java:7379)
... 14 more
我一直在盯着这个试图找出导致问题的原因。我已经在REPL上独立测试了所有方法,它们似乎都工作但是(-main)方法在str / replace调用上抛出空指针异常....只是不确定为什么。非常感谢您提供的任何帮助。谢谢!
答案 0 :(得分:1)
关于你的代码有一点不太正确。我的猜测是 我们接到那个电话,因为你正在调用一个期待的功能 价值并且正在传递 - 我的猜测将是其中一个字符串 功能。
你的功能定义不太正确。如果你的功能只有一个 单个“签名”然后您不需要额外的括号。你也应该 使用let绑定而不是def。例如
(defn -main
[& args]
(let [stoplist (gen-stoplist args)
target-text (get-target-text args))]
(println (redact-doc target-text stoplist)))
您的代码未将您认为的内容传递给gen-stoplist或get-target-text。一世 怀疑空指针是因为调用str / trim被传递为nil 而不是一个字符串。
我的建议是打开一个repl并使用println进行交互 你的函数来查看解析的内容。