Unjar зависимости в JAR с префиксом

1

Я делаю простую пакетную программу, которая должна быть упакована в JAR со всеми зависимостями внутри. JAR-in-JAR eclipse делает мою программу настолько медленной, поэтому я решил извлечь требуемую библиотеку в JAR. Таким образом, ускоряйте выполнение, но сделайте мою "корневую" папку JAR настолько подробной. Чтобы извлечь банку, я использовал

<zipfileset excludes="META-INF/**.*" src="${dep.dir}/antlr-2.7.7.jar" />

и он работает правильно. Когда я пытаюсь использовать префикс, подобный этому

<zipfileset excludes="META-INF/**.*" prefix="dep/" src="${dep.dir}/antlr-2.7.7.jar" />

моя ошибка программы для ClassNotFoundException, поскольку она не могла этого найти. Я пытаюсь изменить MANIFEST, чтобы добавить dep/folder в classpath, но он не работает. Кто-то может мне помочь?

Теги:
jar
ant

1 ответ

1

Файл класса Java должен существовать в файле.jar с контуром, который точно соответствует его полностью квалифицированному имени (что означает пакет + "." + Простое имя класса). Например, класс com.example.Person должен существовать в файле.jar как com/example/Person.class.

Это означает, что вы не можете использовать атрибут prefix zipfileset при включении файлов классов из другого.jar.

Атрибут Class-Path манифеста не относится к пути в файле.jar. Это список относительных URL-адресов других.jar файлов (по сравнению с.jar, содержащим манифест). Файл.jar всегда считается корнем элемента pathpath; нет способа ссылаться на путь в.jar как на запись в classpath.

Я не уверен, что такое "подробный" о корне вашего файла.jar. Насколько я могу судить, классы ANTLR только добавляют к нему каталог org.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню