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

У меня есть 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).

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

9 ответов

Решение

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

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

java -cp myjarfile.jar snake.Controller

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

java -jar myjarfile.jar

Дальнейшее чтение


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

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

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

Если бы вы попытались создать файл.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, в моем случае).

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

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

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

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

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

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

Для пользователя netbeans эта проблема проста:

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

2.Щелкните "Запустить", а также "Браузер".

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

вам просто не хватает статического ключевого слова. это все.

Другие вопросы по тегам