Вероятно, очень обычная проблема с exec jar. Я пытаюсь создать и запустить исполняемый файл, и он сводит меня с ума.
У меня есть пара классов (с пакетом stmts), один из которых имеет метод main, простой пустой конструктор и, конечно же, несколько методов biz, которые являются частью небольшого проекта Eclipse.
Я объединяю оба эти файла и файл манифеста в jar (arc.jar), используя build.xml. Моя программа использует библиотеку jdom, а также ссылки из одного из моих других проектов eclipse, поэтому при сборке моего arc.jar я включаю как библиотеку jdom, так и другую библиотеку biz.
Это Manifest.MF, который я написал, есть новая строка после Main-Class
Manifest-Version: 1.2
Class-Path: jdom.jar other.jar
Main-class: uk.co.Art
Когда я распаковываю этот arc.jar, он содержит jdom.jar, other.jar, META-INF / Manifest.mf и пакет с моими классами.
Как ни странно, файл манифеста в банке выглядит так -
Manifest-Version: 1.2
Created-By: 14.2-b01 (Sun Microsystems Inc.)
Main-class: uk.co.Art
Class-Path: jdom.jar other.jar
Я получил ClassNotFoundException ClassNotFoundException: uk.co.Art
, когда значение класса Main было без пакета. С пакетом ошибка изменилась на ClassNotFoundException: org.jdom.JDOMException
.
Так что просто для целей тестирования я попытался указать полный путь с c:\
как для моего исполняющего класса, так и для jar-файлов, но все равно он не может найти основной класс, ошибки ClassNotFoundException: uk.co.Art
.
Кажется, я не понимаю, почему.
Используемая мной командная строка - java -jar Arc.jar
Версия в командной строке cmd -
java version "1.6.0_16"<br>
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)<br>
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode)
в то время как затмение установлено jre6
Что вы, ребята, можете предложить?
Решение Алекса действительно решило проблему для локального исполнения.
Я также думаю о другом способе (в качестве дополнительной опции) выполнения, чтобы развернуть Arc.jar на сервере и запустить пакет на этом компьютере, который в основном устанавливает путь к классу java, а затем вызывает либо jar, либо напрямую класс в зависимости от того, как работает. But its only an option, not a preferred one though.
Или также установите этот classpath в моем манифесте и соберите jar локально и разверните на сервере.
Хотел бы попробовать несколько вещей, хотя. But now I understand that the basic problem was jars into jar and hence classpath issue.
Большое спасибо, ребята.