Не удалось загрузить атрибут манифеста основного класса из - PullRequest
3 голосов
/ 03 марта 2011

после экспорта из Eclipse у меня есть ошибка:

C:\Program Files\Java\jre6\bin>java C:\wamp\www\JOGL\test.jar
Exception in thread "main" java.lang.NoClassDefFoundError: C:\wamp\www\JOGL\test/jar
Caused by: java.lang.ClassNotFoundException: C:\wamp\www\JOGL\test.jar
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: C:\wamp\www\JOGL\test.jar.  Program will exit.

манифест из этого файла:

Manifest-Version: 1.0
Sealed: true
Main-Class: windows.SimpleScene

та же ошибка при экспорте с Fat Jar

обновлено:

C:\Program Files\Java\jre6\bin>java -jar C:\wamp\www\JOGL\test.jar
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/opengl/GLEventListener
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.media.opengl.GLEventListener
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 12 more
Could not find the main class: windows.SimpleScene. Program will exit.

Ответы [ 5 ]

4 голосов
/ 03 марта 2011

Чтобы запустить файл JAR, вы запускаете:

java -jar (name-of-jar-file)

Итак, вы должны запустить:

java -jar C:\wamp\www\JOGL\test.jar
2 голосов
/ 15 июня 2012

Убедитесь, что при экспорте и создании JAR установлены три вещи:

  1. Экспортируйте его как «исполняемый файл JAR».
  2. Определите вашу конфигурацию запуска (это ваш класс, в котором есть метод main).
  3. выберите "Пакет Обязательные библиотеки в сгенерированный JAR".

enter image description here

1 голос
/ 03 марта 2011

Команда, которую вы ввели только "java file.jar", используется для запуска файлов .class, правильный синтаксис для запуска jar - это "java -jar file.jar", который ищет в вашем jar манифест и выполняет его.

Вы также можете запустить его, добавив путь к классу и имя основного класса

java -cp C:\wamp\www\JOGL\test.jar com.ext.Example
0 голосов
/ 03 марта 2011

Причина, по которой вы видите эту ошибку, в том, что java смотрит на ваш текущий рабочий каталог как путь к классу. где ваш JAR-файл находится в другом каталоге.

У вас есть следующие варианты: 1) cd C: \ wamp \ www \ JOGL java -jar test.jar (как вы определили Main-Class в файле манифеста, java выберет его оттуда). Убедитесь, что ваш jar поддерживает ту же структуру каталогов, что и структура вашего пакета.

2) java -cp C: \ wamp \ www \ JOGL \ test.jar window.SimpleClass (указывает путь к классу на ваш jar)

Примечание. Если у вас есть зависимости от других JAR-классов / классов, помимо этого JAR-файла, они должны быть частью пути к классам (абсолютного / относительно текущего каталога).

0 голосов
/ 03 марта 2011

Это не то, как вы запускаете файл JAR!

Используйте java -jar test.jar синтаксис

...