Не удалось найти основной класс, программа выйдет - PullRequest
25 голосов
/ 01 октября 2011

Я сделал исполняемый файл jar с командной строкой в ​​Windows 7, используя

jar cvfm MyJarName.jar manifest.txt *.class

, который создал файл .jar.Но когда я пытаюсь открыть его, я получаю всплывающее окно с надписью

Could not find the main class: <ClassName>. Program will exit.

Тем не менее, когда я использую

java -jar jarName.jar

в командной строке, он работает нормально.В чем дело?Я хочу иметь возможность просто дважды щелкнуть по нему.

Ответы [ 8 ]

41 голосов
/ 01 октября 2011

Ха, я нашел в чем проблема.Я сделал свою программу, используя jdk1.7, но у меня была установлена ​​jre6.Я пошел и обновился до jre7, и теперь он отлично работает:)

В командной строке работала строка

java -jar jarname.jar

, потому что мой путь java был установлен в папку jdk.

3 голосов
/ 01 октября 2011

Если вы используете JDK 1.6 или выше, вы можете переопределить атрибут манифеста с помощью e флага инструмента Jar. (Чтение - Настройка точки входа с помощью инструмента JAR) :

Пример:

package pack;

public class Test
{
  public static void main(String []args)  
   {
     System.out.println("Hello World");
    }
}

Скомпилируйте и запустите инструмент Jar,

c:\>jar cfe app.jar pack.Test pack/Test.class

Приложение Invoke

c:>java -jar app.jar
2 голосов
/ 03 сентября 2012

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

1 голос
/ 12 апреля 2014

Я столкнулся с той же проблемой. Что я сделал, так это то, что я щелкнул правой кнопкой мыши проект-> свойства и в поле со списком «Выбор / двоичный формат» я выбрал JDK 6. Затем я сделал чистку и сборку, и теперь, когда я щелкаю по банке, все работает отлично.

0 голосов
/ 19 июля 2018

Я получил эту проблему при открытии JMeter 4.0.Я исправил это следующим образом.

У меня установлен JRE 7 в папке Program Files (x86) и JDK 8 установлен в папке Program FilesПоэтому я просто удалил JRE7 с машины.Я только что сохранил последнюю версию JDK.Это исправило проблему.

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

если вы создаете исходные файлы с более низкой версией Java (пример Java1.5) и пытаетесь запустить эту программу / приложение с более высокой версией Java (пример java 1.6), вы получите эту проблему.для лучшего объяснения смотрите эту ссылку. нажмите здесь

0 голосов
/ 16 августа 2012

Проверьте, как это работает (работает на моей машине):

пусть файл будет x.java

  1. скомпилируйте файл javac x.java
  2. jar cfe k.jar x x.class //k.jar is jar file
  3. java -jar k.jar
0 голосов
/ 01 октября 2011

Извлеките банку и сравните содержимое манифеста внутри банки с вашим внешним manifest.txt.Вполне возможно, что вы найдете проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...