Установите файл 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, сделайте следующее:

  1. удалить все записи из файлов манифеста.

  2. перейдите к каждому проекту в навигаторе проектов, щелкните правой кнопкой мыши и выберите диалог свойств.

  3. пройдите через весь ваш проект и выберите та же платформа Java для них. Если проект написан на более старой java, вы можете обновить их без каких-либо проблем. Все Java-кода совместим бесшовные. Ничего плохого не произойдет, если ваши старые проекты java будут перенесены на новую последнюю java.

  4. после выполнения этого шага необходимо установить зависимости / ссылки между проектами. Вы управляете всеми ссылками в категории "библиотеки" диалогового окна "Свойства проекта", вкладка "компиляция". Если зависимость также является проектом Netbeans, нажмите кнопку Добавить проект. Если зависимость является внешней сторонней jar, выберите Добавить jar / folder.

таким образом, когда все сделано, Netbeans пишет сценарий ant в фоновом режиме, и все заботится автоматически. Нет абсолютно никакой необходимости касаться манифеста.MF файлов.

пока этот процесс установки выполняется, вы можете проверить, как все происходит внутри папки dist вашего проекта на диске. (shift+F11 очищает и строит проект.)