Волшебство позади исполняемого фляги? - PullRequest
1 голос
/ 04 августа 2010

Jar - это удобный способ использовать java, так как каждый класс может быть включен в один jar.

Я использую antlr следующим образом, и он вызывает jar с использованием опции -jar.

java -jar $ANTLRDIR/antlr-3.2.jar ANTLR_CODE.g

И эта команда вызывает clojure.Вместо вызова clojure.jar используется опция -jar.Он находится в -cp и вызывает некоторую функцию.

java -cp $CLOJURE_JAR:$CLASSPATH clojure.lang.Script CLOJURE_CODE.clj

Вопросы

  • Какая магия стоит за этим методом?Что такое clojure.lang.Script?
  • Можно ли вызывать antlr таким же образом?Если так, какое имя следует использовать (что-то вроде clojure.lang.Script)?
  • Как насчет файла jar, созданного на других языках: clojure / scala?Как узнать имя, которое должно называться?
  • В чем разница между этими двумя методами?Плюсы и минусы?

1 Ответ

5 голосов
/ 04 августа 2010

• Какая магия стоит за этим методом? Что такое clojure.lang.Script?

clojure.lang.Script - это класс с методом main, который запускает исполняемый файл jar.

• Можно ли вызывать antlr таким же образом? Если так, какое имя следует использовать (что-то вроде clojure.lang.Script)?

Antlr jar можно назвать так же. Вы должны знать имя основного класса (которое находится в файле MANIFEST.MF в банке).

• Как насчет файла jar, созданного на других языках: clojure / scala? Откуда я знаю имя, которое должно называться?

Не знаю ... Наверное, зависит от языка.

• В чем разница между двумя методами? Плюсы и минусы?

Исполняемые файлы jar очень просты для запуска пользователями (особенно в Windows). Просто дважды щелкните файл jar.

• В этом посте мне сказали, что -jar игнорирует все -cp и $ CLASSPATH. Почему это? Есть ли причина для этого?

Без сомнения, ребята из Sun сделали это по соображениям безопасности.

• Мне также сказали, что опция -cp также игнорирует $ CLASSPATH. Почему это? Есть ли для этого веская причина?

Опция -cp переопределяет $ CLASSPATH. Вот и вся цель этой опции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...