Подтвердить что ты не робот

.jar error - не удалось найти или загрузить основной класс

Я попытался поместить HelloWorld в файл .jar и запустить его, но он не работает. Я создал файл java и набрал программу, а затем написал в cmd:

javac HelloWorld.java
java HelloWorld

и это сработало. Затем я ввел

echo Main-Class: HelloWorld >manifest.txt
jar cvfm HelloWorld.jar manifest.txt HelloWorld.class

и получил выход

added manifest
adding: HelloWorld.class(in = 426) (out= 288)(deflated 32%)

Затем я ввел

java -jar HelloWorld.jar
HelloWorld.jar

и первая строка работала, а вторая строка дала мне ошибку:

Error: Could not find or load main class path\HelloWorld.jar

который является тем же результатом, который я получил (в быстро закрывающемся окне), когда я попытался открыть его с файлом java.exe в 64-разрядном файле jre7\bin, jdk1.7.0_51\bin, jdk1.7.0_51\jre\bin, а также 32 бит jre7\bin. Я удалил и переустановил оба моих jre и jdk и воссоздал файлы .class и .jar, но проблема не устранена. Я нахожусь на win8.

Редактировать: Я пытался сделать то, что предложил Эферия, но не повезло. Я поместил HelloWorld.java в путь \com\stackoverflow\user\blrp, скомпилировал его, и он работал, введя

java com.stackoverflow.user.blrp.HelloWorld

в пути. Затем я создал манифест и jar:

(echo Manifest-Version: 1.0
echo Class-Path: .
echo Main-Class: com.stackoverflow.user.blrp.HelloWorld) >manifest.txt
jar cvfm HelloWorld.jar manifest.txt com\stackoverflow\user\blrp\HelloWorld.class

и получил выход

added manifest
adding: com/stackoverflow/user/blrp/HelloWorld.class(in = 454) (out= 312)(deflat
ed 31%)

но все же, java -jar HelloWorld.jar работал, и HelloWorld.jar не сделал (такая же ошибка). Я также старался не делать вещи пакета, просто манифест класса-класса, тот же результат.

(Кроме того, я решил проблему до того, как задал вопрос, используя файл .bat, но все равно было бы приятно, если бы эта работа работала.)

4b9b3361

Ответ 1

Спасибо jbaliuka за предложение. Я открыл редактор реестра (набрав regedit в cmd) и перейдя в HKEY_CLASSES_ROOT > jarfile > shell > open > , затем откройте (по умолчанию) и изменив значение из

"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

to

"C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*

(Я просто удалил w в javaw.exe.) После этого вы должны щелкнуть правой кнопкой мыши jar → open с → выбрать программу по умолчанию → перейти к вашей папке java и открыть \jre7\bin\java.exe(или любой другой файл java.exe в вашей папке java). Если это не сработает, попробуйте переключиться на javaw.exe, откройте файл jar с ним, затем откройте его.

Я ничего не знаю о редактировании реестра, за исключением того, что это опасно, поэтому вы можете его создать, прежде чем делать это (в верхней строке, "Файл" > "Экспорт" ).

Ответ 2

Вы всегда можете запустить это:

java -cp HelloWorld.jar HelloWorld

-cp HelloWorld.jar добавляет банку путь к классу, тогда HelloWorld запускает класс, который вы написали.

Чтобы создать runnable jar с основным классом без пакета, добавьте Class-Path: . в манифест:

Manifest-Version: 1.0
Class-Path: .
Main-Class: HelloWorld

Я бы посоветовал использовать package, чтобы дать вашему классу собственное пространство имен. Например.

package com.stackoverflow.user.blrp;

public class HelloWorld {
    ...
}

Ответ 3

Я нашел этот вопрос, когда искал ответ на вышеупомянутый вопрос. Но в моем случае проблема заключалась в использовании "en dash", а не "тире". Проверьте, какой тире вы используете, это может быть неверно. Я надеюсь, что этот ответ ускорит поиск кого-то другого, такой комментарий мог бы сэкономить мне немного времени.

Ответ 4

Если бы эта проблема не смогла найти ответ, поэтому я просмотрел другие темы, я обнаружил, что я делаю свое приложение с 1,8, но по какой-то причине мой jre был устаревшим, хотя я помню его обновление. Я загрузил lastes jre 8, и файл jar работает отлично. Надеюсь, это поможет.

Ответ 5

I Столкнулась с той же проблемой при установке установки с использованием файла jar. Решение thta для меня было

  • открыть командную строку как администратор
  • Перейдите в каталог jdk bin (Ex.C:\Program Files\Java\jdk1.8.0_73\bin)
  • выполните java -jar <<jar fully qualified path>>

Это сработало для меня:)