Я написал программу, которая охватывает несколько классов в IntelliJ, и отлично работает, когда я тестировал ее в среде IDE. Тем не менее, всякий раз, когда я следую учебникам, чтобы сделать проект в исполняемом файле .jar, он не запускается.Файлы JAR, созданные IntelliJ IDEA, не запускаются
файл в папке из не работает, когда дважды щелкните по нему и говорит: «JAR-файл Java„projectName.jar“не может быть запущен.
При открытии его из терминала, я получаю . ошибка "не удалось найти или загрузить основной класс" Я "$ Java -jar projectName.jar"
я следовал следующие шаги:
- Open Project Structure, Артефакты и нажмите (+) .
- Под JAR, из модулей с зависимостей.
- Обратите внимание на класс с моим основным методом и нажмите «ОК».
- Нажмите кнопку Apply и OK для выхода.
- Затем я закрываю структуру проекта и открываю сборку, а затем строю артефакты ...
- Затем я нажимаю «Сборка».
- Перейдите к ~/IdeaProjects/Projectname/выход/артефакты/projectName_jar/projectName.jar
Тогда я хотел бы попробовать запустить его, но он не работает. Мой проект имеет графический интерфейс и может запускаться из командной строки. Когда я скомпилировал основной метод в терминале, он работал нормально, но мне нужен JAR-файл. Я не уверен, что я должен включить в вопрос, так как я уверен, что мой код не связан. Я также использую Maven, не уверен, что это связано. Есть ли другие вещи, которые я должен делать или добавлять в свой проект, прежде чем я создам JAR?
Файл MANIFEST.MF был создан IntelliJ, поэтому я предполагаю, что это верный. Основной класс правильный, но есть только 2 строки, один - «Манифест-Версия: 1.0», а другой - «Основной класс: имя_проекта». Должно ли быть что-то еще? –
Потенциально. Атрибут Main-Class должен быть полным доменом. I.Е если ваш класс находится в каком-то пакете или пакетах ... 'com.packagename.ClassName'. См. [Основы пакета] (https://newcircle.com/bookshelf/java_fundamentals_tutorial/packaging) Разделы: 7.5. Использование членов пакета: квалифицированные имена. Поэтому, если у вас нет пакетов, атрибут - это просто имя класса, у которого есть основной метод, который вы хотите запустить. Вот лучшее описание этого с веб-сайта Oracles [Установка точки входа приложения] (https://docs.oracle.com/javase/tutorial/deployment/jar/appman.html) – Underbalanced
@ EricChan Я забыл пометить вас в своем комментарий. Новое для стека. – Underbalanced