为什么打印函数在使用java-jar调用时不打印?

为什么打印函数在使用java-jar调用时不打印?,java,jar,clojure,leiningen,Java,Jar,Clojure,Leiningen,我正在和莱宁根一起学习clojure。我编写了一个简单的代码来测试lein&java-jar命令。这是我的project.clj文件: $ cat project.clj (defproject hello "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" :license {:name "Eclipse Public License"

我正在和莱宁根一起学习clojure。我编写了一个简单的代码来测试lein&java-jar命令。这是我的project.clj文件:

$ cat project.clj 
(defproject hello "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.8.0"]]
  :main ^:skip-aot hello.core
  :target-path "target/%s"
  :profiles {:uberjar {:aot :all}})
以下是我的源代码:

$ cat src/hello/core.clj 
(ns hello.core
  (:gen-class))

(defn -main
  [& args]
  (print "Hello, World!"))
当我使用lein运行这段代码时,它工作得很好。如图所示

$ lein run
Hello, World!$
当我尝试运行java-jar时,它不起作用

$ lein uberjar
Compiling hello.core
Created /home/rishi/hello/target/uberjar/hello-0.1.0-SNAPSHOT.jar
Created /home/rishi/hello/target/uberjar/hello-0.1.0-SNAPSHOT-standalone.jar

$ java -jar target/uberjar/hello-0.1.0-SNAPSHOT-standalone.jar
我不明白,为什么我没有用java-jar获得所需的输出


如果我在源文件中将print替换为println,我将通过lein run&java-jar获得所需的输出,您的进程输出将被缓冲<代码>打印不会刷新输出。大多数情况下,输出流将设置为自动刷新换行符,这就是为什么显示
println
。如果需要刷新而不使用换行符,可以调用
(刷新)
函数。

酷!我明白了。我得到了答案。谢谢@吵闹声我来#(让我说!)