запуск java [-options] -jar jarfile (явное имя класса не указано) - PullRequest
2 голосов
/ 04 января 2010

Пожалуйста, поправьте меня, если я ошибаюсь.

При запуске java [-options] -jar jarfile без явного имени класса, если в jar существует один класс, содержащий метод public static void main(String[] args), этот метод будет вызван автоматически. Правильно?

Что произойдет, если у меня будет несколько классов, в которых есть подходящий метод main?

Ответы [ 5 ]

6 голосов
/ 04 января 2010

Он использует Main-Class, определенный в файле MANIFEST, чтобы определить, какой класс содержит основной метод, который должен быть запущен.

см. http://java.sun.com/docs/books/tutorial/deployment/jar/appman.html

4 голосов
/ 04 января 2010

Класс для запуска взят из метаданных Manifest .

Main-Class:

Значение этого атрибута определяет относительный путь основного класс приложения, который запускается будет загружаться во время запуска. Значение не должно иметь расширение .class добавляется к имени класса.

2 голосов
/ 04 января 2010

Если вы попытаетесь использовать java -jar на банке без указанного выше манифеста, вы получите следующий вывод:

Failed to load Main-Class manifest attribute from <jarname>.jar
2 голосов
/ 04 января 2010

Какой класс 'main запускается, определяется файлом MANIFEST внутри .jar. В частности, атрибут Main-Class.

2 голосов
/ 04 января 2010

JAR должен содержать файл манифеста с записью "Main-Class".

Редактировать: Я помню, в какой-то момент документы были неверными. Если «Main-Class» не работает для вас, попробуйте «Main-class» (строчный «class»).

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