Ошибка «Не удалось найти основной класс» при запуске jar-файла, экспортированного Eclipse - PullRequest
24 голосов
/ 08 марта 2012

У меня есть проект Java, который прекрасно работает при запуске из Eclipse.Когда я пытаюсь экспортировать его в "JAR file" или "Runnable JAR file", создается файл .jar, но когда я дважды щелкаю по нему, чтобы попытаться запустить программу, появляется сообщение об ошибке

"Could not find the main class: package.MainClassName. Program will exit."

Как я уже упоминал, я пытался экспортировать в обе опции JAR, я указал правильный класс, в котором находится метод main, и когда я просматриваю фактические файлы в файле .jar, все кажется в порядке - манифествыглядит примерно так:

Manifest-Version: 1.0
Main-Class: package.MainClassName
(blank line)

и находится в папке META-INF.Есть папка с моим именем пакета, которая содержит все файлы .class, включая класс, который содержит метод main.Несколько файлов изображений и текстов, которые я использую, также появляются в jar-файле.

Реальная программа не слишком сложна - это простая игра "змея" с использованием Swing (плюс код работает во время работыизнутри Eclipse).

Есть идеи, что вызывает эту ошибку и как я могу ее исправить?Дайте мне знать, если есть какая-либо другая информация, которую я должен предоставить.

Ответы [ 8 ]

22 голосов
/ 08 марта 2012

Убедитесь, что вы можете запустить свое приложение так:

java -cp myjarfile.jar snake.Controller

Я только что прочитал , когда дважды щелкнул по нему - это звучит как проблема конфигурации вашей операционной системы. Вы дважды щелкаете файл в окне проводника Windows? Попробуйте запустить его из консоли / терминала с помощью команды

java -jar myjarfile.jar

Дополнительная литература


Манифест должен заканчиваться новой строкой. Пожалуйста, проверьте ваш файл, пропущенная новая строка вызовет проблемы.

6 голосов
/ 08 марта 2012

Хорошо, так что я наконец-то получил его на работу.Если я использую JRE 6 вместо 7, все отлично работает.Не знаю почему, но это работает.

5 голосов
/ 30 апреля 2014

Запустите его так в командной строке:

java -jar /path/to/your/jar/jarFile.jar
5 голосов
/ 08 марта 2012

Если бы вы попытались создать файл .jar вручную вместо использования Eclipse.Попробуйте выполнить следующие шаги, надеюсь, это может помочь:

Учитывая, что ваша структура каталогов выглядит следующим образом:

 TicTacToe(Your Project Name I mean)
 |              |                  |
src            bin             manifest.txt
             |    |
           icons  tictactoe

Теперь предположим, что мой основной класс BeginGame внутри пакета tictactoe,поэтому я напишу в своем файле manifest.txt эту вещь:

Main-Class: tictactoe.BeginGame

Запомните пробел между двоеточиями : и именем пакета, т.е. tictactoe, и сразу после BeginGame нажмите Enter и сохранитефайл.

Теперь в командной строке перейдите к папке bin, я описываю свою сторону следующим образом:

C:\Mine\Eclipse\TicTacToe\bin>jar -cfm ..\tictactoe.jar ..\manifest.txt tictactoe icons
  • Здесь первый аргумент, т.е. ..\tictactoe.jarиспользуется для указания того, что tictactoe.jar создается на один уровень выше, то есть внутри TicTacToe Folder.
  • Второй аргумент ..\manifest.txt означает, что файл manifest.txt расположен на один уровень выше, то есть внутри TicTacToe Folder.
  • Третий и четвертый аргументы tictactoe и icons означают, что обе эти папки добавляются в файл .jar, так как они находятся внутри папки bin, поэтому они используются как есть.Теперь нажмите Enter.

Теперь попробуйте запустить файл .jar, созданный таким образом внутри Project Folder (в моем случае папка TicTacToe).

Надеюсь, это сработает.

1 голос
/ 02 февраля 2018

Я столкнулся с теми же проблемами на днях, и мне потребовались дни, чтобы заставить это работать.Сообщение об ошибке было «Не удалось найти основной класс», но я могу без проблем запустить исполняемый файл jar, экспортированный из Eclipse, на других компьютерах с Windows.

Решением было установить обе версии - x64 и x86.версия JRE.Переменная среды path была указана на версию x64.Не знаю почему, но у меня это сработало.

1 голос
/ 14 августа 2012

Переименовали ли вы свой проект / основной класс (например, с помощью рефакторинга)? Если да, ваша Launch Configuration может быть установлена ​​неправильно (например, ссылаясь на old основной класс или конфигурацию). Несмотря на то, что имя проекта отображается в диалоговом окне «Экспортировать исполняемую флягу», при более внимательном рассмотрении может быть обнаружено несоответствующее имя основного класса.

Перейдите в «Свойства-> Параметры запуска / отладки» вашего проекта и убедитесь, что в конфигурации запуска (то же, что используется для экспорта исполняемого файла jar) установлено правильное имя проекта И вашего основного класса установлено на name.space.of.your.project/YouMainClass.

0 голосов
/ 31 августа 2017

Для пользователей NetBeans, которые сталкиваются с этой проблемой, просто:

1. Перейдите в свой проект, щелкните правой кнопкой мыши и выберите «Свойства»

2. Нажмите «Выполнить», а также нажмите «Браузер».

3.Выберите кадры, которые хотите отображать в первый раз.

0 голосов
/ 12 октября 2015

Щелкните правой кнопкой мыши по проекту. Перейти к свойствам. Нажмите на Run / Debug Settings. Теперь удалите конфигурацию запуска вашего основного класса, который вы пытаетесь запустить. Теперь, когда вы нажмете снова запустить, все будет работать нормально.

...