Проблема при создании и запуске файла .jar - PullRequest
0 голосов
/ 09 марта 2012

Я скомпилировал проект java в jar, но у меня возникли некоторые проблемы при попытке его запустить

java -jar XMltoCSV.jar
Ошибка: не удалось найти или загрузить основной классXMLtoCSV.class

Я создал файл манифеста, который содержит:

Main-Class: xmltocsv.XMLtoCSV

(существуетсимвол новой строки в текстовом файле манифеста)

Класс XMLtoCSV.class содержит метод main ().Я выполняю этот код для создания файла jar:

jar cvf XMLtoCSV.jar Manifest.txt xmltocsv / *. Class

И я знаю, что он работает, потому что яget:

jar cvfm XMLtoCSV.jar manifest.txt XMLtoCSV.class
добавлен манифест
добавлено: XMLtoCSV.class (in = 4885) (out = 2492) (дефлировано 48%)

Почему это дает мне эту ошибку?Заранее спасибо за помощь

Похоже, у меня также возникает другая ошибка, что это значит?:

Исключение в потоке "main" java.lang.UnsupportedClassVersionError: xmltocsv/ XMLt oCSV: неподдерживаемая версия major.minor 51.0 в java.lang.ClassLoader.defineClass1 (собственный метод) в java.lang.ClassLoader.defineClassCond (неизвестный источник) в java.lang.ClassLoader.defineClass (неизвестный источник) в java.security..SecureClassLoader.defineClass (неизвестный источник) на java.net.URLClassLoader.defineClass (неизвестный источник) на java.net.URLClassLoader.access $ 000 (неизвестный источник) на java.net.URLClassLoader $ 1.run (неизвестный источник) на java.security.AccessController.doPrivileged (собственный метод) в java.net.URLClassLoader.findClass (неизвестный источник) в java.lang.ClassLoader.loadClass (неизвестный источник) в sun.misc.Launcher $ AppClassLoader.loadClass (неизвестный источник) в java.lang.ClassLoader.loadClass (Неизвестный источник) Не удалось найти основной класс: xmltocsv.XMLtoCSV.Программа закроется.

Ответы [ 3 ]

4 голосов
/ 09 марта 2012
Main-Class: XMLtoCSV.class

это не правильно.

Вы должны указать что-то вроде:

Main-Class: com.mydomain.XMLtoCSV

, а именно полное имя класса.

См .: http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html

3 голосов
/ 09 марта 2012

Бросьте .class в своем манифесте.

Обновление: Что такое package вашего основного класса?Если ваш Java-файл содержит утверждение типа

package com.google.common.base;

вверху.Вам нужен этот пакет в вашем манифесте.В вашем случае это будет:

Main-Class: com.google.common.base.XMLtoCSV

Если у вашего класса нет такого пакета состояния, ошибка является чем-то другим.com.google.common.base это просто пример, конечно.)

0 голосов
/ 09 августа 2013

Для того, чтобы jar был исполняемым, вы должны иметь дело с двумя вещами в файле манифеста:

1- Запись 'Main-Class' должна указывать на класс, который будет запускать приложениет. е. класс, в котором вы объявили метод main для запуска приложения.

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

Самый простой файл MANIFEST будет выглядеть следующим образом:

Manifest-Version: 1.0
Main-Class: com.foo.FOO

Просто не забудьте оставить три строки пустыми после последней записи.

Надеюсь, я помог.

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