Установите файл jar для удаления lib из пути к классам с помощью NetBeans
Я использую NetBeans 8.1, Apache Ant 1.9.4 и Java 1.8.0_66.
в нашей среде развертывания локальной сети у нас есть каталог приложений с подкаталогом /lib. У нас есть библиотека (библиотека.jar) в / lib, который зависит от других библиотек (Dep.jar) внутри / lib. Многие приложения (Приложения.jar) зависят от библиотеки.сосуд. Многие из этих библиотек и приложений были построены некоторое время назад и используют более старые версии, чем я упоминал (Java 1.6 или выше.)
ранее манифест для приложения.банку будет ссылка Class-Path: lib/Library.jar
и библиотека.банку будет ссылка Class-Path: lib/Dep.jar
.
это работало, пока мы не сделали некоторые исправления и обновили библиотеку.jar до последней версии Java. Теперь, когда мы запускаем приложение.Джар, деп.банка не найдена, хотя наши декларации выглядят так же, как и раньше. Приложение.jar теперь ищет lib/lib / Dep.jar вместо lib / Dep.библиотека jar, так.jar находится в каталоге / lib.
наше самое лучшее решение до сих пор был редактировать Манифест.mf файл в библиотеке.jar to Class-Path: Dep.jar
. Это предотвращает приложение.Jar от двух либов в глубину, чтобы искать Dep.Сосуд. Однако редактирование файлов jar-это не то, что мы хотели бы сделать общей практикой, поэтому мы предпочли бы решение в IDE NetBeans или что-то, что мы можем добавить в сборку.xml, который удалит lib из путей к классам в файле jar и позволит нам ссылаться на jar в том же каталоге. Я хотел бы решение, которое не включает пакет для магазина, как мы бы как обновить наши зависимые банки, сохраняя при этом указатели на них.
кроме того, я хотел бы знать, что вызвало изменение в первую очередь, будь то обновление версии или иначе. Любая помощь будет очень признательна.
текущее построение.XML-код:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Library" default="default" basedir=".">
<description>Builds, tests, and runs the project Library.</description>
<import file="nbproject/build-impl.xml"/>
</project>
2 ответов
можно использовать <path>
или <classpath>
из Apache Ant, как определено ниже,
<path id="ant.classpath">
<fileset dir="common-libs">
<include name="*.jar" />
</fileset>
</path>
в свою сборку.xml, который может указывать на папку, где требуется `*.jar " находится.
а затем используйте этот путь во время создания приложения в target
команды строить.
больше ссылок, путь-подобные структуры
и, где classpath, path и pathelement документированы в Ant версии 1.8.0
при использовании IDE (Netbeans или Eclipse), вы не должны касаться файлов манифеста в любое время. IDE делает все для вас, основываясь на настройке вашего проекта.
поэтому, если у вас есть Netbeans, сделайте следующее:
удалить все записи из файлов манифеста.
перейдите к каждому проекту в навигаторе проектов, щелкните правой кнопкой мыши и выберите диалог свойств.
пройдите через весь ваш проект и выберите та же платформа Java для них. Если проект написан на более старой java, вы можете обновить их без каких-либо проблем. Все Java-кода совместим бесшовные. Ничего плохого не произойдет, если ваши старые проекты java будут перенесены на новую последнюю java.
после выполнения этого шага необходимо установить зависимости / ссылки между проектами. Вы управляете всеми ссылками в категории "библиотеки" диалогового окна "Свойства проекта", вкладка "компиляция". Если зависимость также является проектом Netbeans, нажмите кнопку Добавить проект. Если зависимость является внешней сторонней jar, выберите Добавить jar / folder.
таким образом, когда все сделано, Netbeans пишет сценарий ant в фоновом режиме, и все заботится автоматически. Нет абсолютно никакой необходимости касаться манифеста.MF файлов.
пока этот процесс установки выполняется, вы можете проверить, как все происходит внутри папки dist вашего проекта на диске. (shift+F11 очищает и строит проект.)