Ошибка "Не удалось найти главный класс" при запуске jar, экспортированного Eclipse

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

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

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

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

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

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

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

Ответ 1

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

Ответ 2

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

java -cp myjarfile.jar snake.Controller

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

java -jar myjarfile.jar

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


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

Ответ 3

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

Учитывая, что ваша структура каталогов выглядит так:

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

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

Main-Class: tictactoe.BeginGame

Помните пробел между двоеточиями : и именем пакета i.e. 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 Folder, поэтому они используются как есть. Теперь нажмите Enter.

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

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

Ответ 4

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

java -jar /path/to/your/jar/jarFile.jar

Ответ 5

Вы переименовали свой проект/основной класс (например, через рефакторинг)? Если да, то ваша Конфигурация запуска может быть настроена некорректно (например, ссылаясь на основной класс старый или конфигурацию). Несмотря на то, что имя проекта появляется в диалоговом окне "экспортный доступный баннер", более тщательный осмотр может выявить непревзойденное имя основного класса.

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

Ответ 6

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

Ответ 7

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

1.Выполните проект и щелкните правой кнопкой мыши и выберите свойства

2. Нажмите "Запустить", а затем нажмите "Браузер".

3. Выберите нужные вам кадры.