Не могу найти класс загрузки в папке lib jar - PullRequest
1 голос
/ 19 октября 2011

Я упаковываю все мои файлы зависимостей в папку lib моего последнего файла jar. Но когда я использую команду для выполнения как java -cp my.jar MyMainClass, он говорит, что не может загрузить класс в папку lib, что здесь не так?

Спасибо

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Если ваша программа упакована как исполняемый файл jar, у вас должна быть отдельная папка, в которую помещаются другие зависимости jar, а затем укажите эту папку как находящуюся в пути к классам при запуске вашей программы:

java -classpath c:\path\to\dir_with_jars -jar myExecutableJar.jar p1.MainClass

Также: если вы хотите использовать неортодоксальный метод упаковки ваших jar-зависимостей в jar-файл, вы должны поместить эти зависимости в ROOT вашего исполняемого jar-файла, а не в какую-либо папку (lib или иным образом).Таким образом, они будут эффективно находиться в корне вашего пути к классам, поэтому, если вы запустите свой jar как:

java -cp:. -jar myJar.jar

, он должен работать

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

0 голосов
/ 19 октября 2011

Вы также можете использовать zip для распаковки архива и заглянуть в my.jar, чтобы узнать, что там и есть ли там ваш MyMain.class.

...