Не удалось найти основной класс, программа выйдет
Я сделал исполняемую банку с командной строкой в Windows 7 с помощью
jar cvfm MyJarName.jar manifest.txt *.class
который создал файл .jar. Но когда я пытаюсь открыть его, у меня появляется всплывающее окно, в котором говорится
Could not find the main class: <ClassName>. Program will exit.
Тем не менее, когда я использую
java -jar jarName.jar
в командной строке, он отлично работает. Какая сделка? Я хочу, чтобы иметь возможность просто дважды щелкнуть по нему.
Ответы
Ответ 1
Ха, я понял, в чем проблема. Я сделал свою программу, используя jdk1.7, но у меня был установлен jre6. Я пошел и обновился до jre7, и теперь он отлично работает:)
java -jar jarname.jar
В командной строке работала строка потому что мой путь Java был установлен в папку jdk.
Ответ 2
Если вы используете 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
Вызвать приложение
c:>java -jar app.jar
Ответ 3
Текстовый файл манифеста должен заканчиваться новой строкой или возвратом каретки. Последняя строка не будет правильно проанализирована, если она не заканчивается новой строкой или возвратом каретки.
Ответ 4
Извлеките банку и сравните содержимое манифеста внутри банки с вашим внешним manifest.txt. Вполне возможно, что вы найдете проблему.
Ответ 5
У меня была та же проблема. То, что я сделал, это щелкнуть правой кнопкой мыши свойства project- > и из выпадающего списка "Выбрать/Двоичный формат", я выбрал JDK 6. Затем я очистил и построил, а теперь, когда я нажимаю Jar, он работает отлично.
Ответ 6
Если вы создадите исходные файлы с более низкой версией Java (пример Java1.5) и попытаетесь запустить эту программу/приложение с более высокой версией Java (пример java 1.6), вы получите эту проблему.
для лучшего объяснения см. эту ссылку. нажмите здесь
Ответ 7
Посмотрите, как это делается (работает на моей машине):
пусть файл будет x.java
- скомпилировать файл javac x.java
- jar cfe k.jar x x.class//k.jar - файл jar
- java -jar k.jar