Java: загрузка классов и ссылочных jar из jar - PullRequest
1 голос
/ 16 января 2012

Представьте себе, что существует jar (с именем lib.jar ), который содержит один файл класса и манифеста.

Класс - MyLibClass1.Класс MyLibClass1 содержит один открытый статический метод execute ().

В файле манифеста есть строка «Class-Path:», которая ссылается на другие файлы jar ( jar1.jar и jar2.jar )

MANIFEST.MF находится в META-INF lib.jar и содержит:

Путь к классу: jar1.jar jar2.jar

Эти jar-файлы используются в каком-то проекте MyProject и находятся в его каталоге libs.

В проекте есть основной класс Main с методом main и имеет только 1 строку:

MyLibClass1.execute ();

Проблема состоит в том, что когда я пытаюсь вызвать основной класс MyProject, JVM говорит, что этоне удалось найти класс MyLibClass1, который равен в lib.jar .

java -cp libs / *; bin Main

Любые предложения?

ОБНОВЛЕНИЕ:

Java-версия Java-версия "1.6.0_24"Java (TM) SE Runtime Environment (сборка 1.6.0_24-b07)Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 19.1-b02, смешанный режим)

Папка libs содержит lib.jar , jar1.jar и jar2.jar

Есть хороший комментарий о том, где находится Main.class.На самом деле класс в каталоге bin, поэтому я должен изменить команду выполнения java.

java -cp libs / *; bin Main

Ответы [ 3 ]

0 голосов
/ 16 января 2012

Попробуйте добавить точку с запятой после "bin".

java -cp libs/*;bin; Main

0 голосов
/ 16 января 2012

Я решил проблему, удалив манифест из файла lib.jar.

Поэтому есть немного запутанный вывод: "Class-Path:" банки скрывает классы самой банки.

Добро пожаловать, чтобы опровергнуть это утверждение.

0 голосов
/ 16 января 2012

Если текущий каталог bin, тогда вы должны запустить java -cp ".;../libs/*" Main

...