java - 可执行 jar 背后的魔力?

标签 java jar

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/

相关文章:

java - 为什么 "array instanceof Iterable"不能用 Java 编译?

java - 如何获取简单规则.jar 文件?

java - Maven:从 JAR 中排除 "META-INF/maven"文件夹

java - 理解 JViewPorts 时遇到一些困难

c# - 带有 EMF 和 RCP 的 Java 与 C#

java - 部署spring boot应用程序的正确方法是什么

java - 我收到错误 : An unexpected error occurred while trying to open file hola. jar

java - Gson 抛出 MalformedJsonException 和其他异常

java - 获取可运行的 jar 文件的名称

java - UML 类图,关联 : class -> interface