Ошибка "Не удалось найти основной класс" при запуске 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.Выберите кадры, которые хотите отображать.