Jar是一种使用java的便捷方式,因为每个类都可以包含在一个jar中。
我使用如下的antlr,并使用-jar选项调用jar。
java -jar $ANTLRDIR/antlr-3.2.jar ANTLR_CODE.g
而且,这是调用clojure的命令。而不是使用-jar选项调用clojure.jar。它位于-cp中,并调用一些“函数”。
java -cp $CLOJURE_JAR:$CLASSPATH clojure.lang.Script CLOJURE_CODE.clj
答案 0 :(得分:5)
•这种方法背后的魔力是什么?什么是'clojure.lang.Script'?
clojure.lang.Script是具有jar可执行文件正在运行的main方法的类。
•可以用同样的方式调用antlr吗?如果是这样的话应该使用什么名字(比如clojure.lang.Script)?
可以用相同的方式调用antlr jar。您必须知道主类的名称(位于jar中的MANIFEST.MF文件中。)
•用其他语言制作的jar文件怎么样:clojure / scala?我如何知道应该调用的名称?
我不知道......可能取决于语言。
•这两种方法有什么区别?优点和缺点?
用户可以轻松启动可执行jar(特别是在Windows中)。只需双击jar文件即可。
•在这篇文章中,我被告知-jar会忽略所有-cp和$ CLASSPATH。为什么是这样?这有什么理由吗?
毫无疑问,Sun出于安全原因这样做了。
•我还被告知-cp选项也忽略了$ CLASSPATH。为什么是这样?这有什么好的理由吗?
-cp选项会覆盖$ CLASSPATH。这就是这个选项的全部目的。