可执行jar背后的魔力?

时间:2010-08-03 22:27:22

标签: 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?我怎么知道应该叫的名字?
  • 这两种方法有什么区别?优点和缺点?

1 个答案:

答案 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。这就是这个选项的全部目的。