Я пытаюсь загрузить файл http://algs4.cs.princeton.edu/code/algs4.jar и запустить его с помощью Jar Launcher (приложение по умолчанию). Однако я получаю следующее:
Следуя https://discussions.apple.com/thread/4827576?tstart=0 , я также пытался использовать утилиту архивирования; это, кажется, создает algs4.jar.cpgz
файл, но я не уверен, что с ним делать. Как я могу открыть файл JAR?
Несмотря на то, что в сообщении об ошибке говорится, что нужно проверить консоль, я не нашел там ничего полезного. Однако, если вы попытаетесь запустить файл JAR из терминала, вы получите эту ошибку:
no main manifest attribute, in ./algs4.jar
Эта ошибка означает, что в файле JAR отсутствует параметр «Main-Class» в файле MANIFEST.MF. Параметр Main-Class сообщает среде выполнения Java, какой класс является точкой входа , т. е. какой класс запускать первым при запуске.
Вы можете добавить этот параметр с помощью Терминала. Прежде всего загрузите файл JAR с веб-сайта Принстона, затем выполните следующую команду (при условии, что файл JAR находится в папке «Загрузки»):
jar ufe ~/Downloads/algs4.jar TestAlgs4
Эта команда обновляет файл MANIFEST.MF в JAR. Как только это будет сделано, файл JAR должен успешно запуститься из Finder или Terminal.
Сказав все это, вы получите ошибку, только если попытаетесь запустить JAR как исполняемый файл. Я не думаю, что ты должен это делать. Вы должны просто поместить файл JAR туда, где среда выполнения Java сможет его найти, а затем ссылаться на него в коде, который вы пишете, выполняя упражнения в этой книге. Здесь есть четкие инструкции о том, что вы должны делать с файлом JAR: https://algs4.cs.princeton.edu/code/
Как говорится в сообщении об ошибке, вы можете проверить консоль (/Applications/Utilities/Console) на наличие журналов ошибок. Вы также можете открыть окно терминала и запустить банку из командной строки, что должно привести к выводу любых ошибок в терминал. Если ваша банка находится в папке загрузок, вы должны запустить:
java -jar ~/Downloads/algs4.jar
Если у вас есть ошибка, если вы не можете ее понять, обновите свой вопрос, и мы можем попытаться предоставить дополнительную информацию.
Аллан