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
问题
- 这种方法背后的魔力是什么?什么是“clojure.lang.Script”?
- antlr可以用同样的方式调用吗?如果是这样,应该使用什么名称(类似于 clojure.lang.Script)?
- 用其他语言制作的 jar 文件怎么样:clojure/scala?我怎么知道应该叫什么名字?
- 这两种方法有什么区别?优点和缺点?
最佳答案
•这种方法背后的魔力是什么?什么是“clojure.lang.Script”?
clojure.lang.Script 是 jar 可执行文件正在运行的具有主要方法的类。
•antlr可以这样调用吗?如果是这样,应该使用什么名称(类似于 clojure.lang.Script)?
antlr jar可以这样调用。您必须知道主类的名称(在 jar 中的 MANIFEST.MF 文件中。)
•用其他语言制作的jar文件怎么样:clojure/scala?我怎么知道应该叫什么名字?
我不知道...可能取决于语言。
•这两种方法有什么区别?优缺点?
可执行 jar 非常容易让用户启动(尤其是在 Windows 中)。只需双击 jar 文件。
•在这篇文章中,有人告诉我 -jar 会忽略所有 -cp 和 $CLASSPATH。为什么是这样?这有什么原因吗?
毫无疑问,Sun 的人这样做是出于安全原因。
•我还被告知 -cp 选项也忽略了 $CLASSPATH。为什么是这样?这有什么好的理由吗?
-cp 选项覆盖 $CLASSPATH。这就是此选项的全部目的。
关于java - 可执行 jar 背后的魔力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401239/