Инкубация Netbeans 9.0 - не создает каталог `lib` в` dist` для перенесенного / обновленного проекта Java 10 - PullRequest
0 голосов
/ 19 сентября 2018

Я начал использовать NetBeans 9.0 (инкубирование) с Java 10. Я создал новый тестовый проект Java-приложения и поставил галочку «Использовать выделенную папку для хранения библиотек» («\ lib») при его создании.Я также установил версию JDK / Java на 10.Затем я включил Apache Commons Codec 1.11 в качестве библиотеки зависимостей.Я не делал ничего другого, кроме импорта класса Base64 из пакета binary в основной класс.

Однако при создании приложения NetBeans не создает libкаталог в каталоге dist, и при этом он не создает толстый Jar-файл, включающий пакет (ы) org.apache.commons.codec.* из библиотеки.

Это кажется специфическим для Java 10, поскольку он ведет себя как ожидалось (скопированные библиотекичерез), когда я изменил версию JDK / Java на 8.

Редактировать: Я видел различные ответы на другие вопросы (о других версиях Netbeans и Java), которые выдвигали различные target и condition фрагменты для размещения в скриптах сборки для переопределения build-impl.xml, которые я пытался безрезультатно.

Это оставляет два вопроса?

  1. Netbeans 9.0 не полностью поддерживает Java 10, вызывая сбой задачи copyLibs без вывода сообщений?
  2. Не поддерживает ли Java 10 созданиеlib каталог относительно jar приложения или я не могу правильно настроить проект?

Примечание: Цель тестового проекта состояла в том, чтобы диагностировать, могу ли я воспроизвестипроблема, затрагивающая более крупный проект, который необходимо обновить, чтобы использовать более новую версию Java.Старый проект использует ряд библиотек, разработанных внутри компании, в которой я работаю.У нас нет ресурсов, необходимых для настройки и перехода на систему сборки на основе Maven, и мы по-прежнему используем Ant.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Я могу воспроизвести вашу проблему.

К сожалению, это ошибка NetBeans 9.0.См. NETBEANS-1097 «Копирование зависимых библиотек» не работает, если «Исходный / двоичный формат» равен JDK 9 или JDK 10 .

Эта ошибка описывает возможный обходной путь, который также упоминается в Halvor'sответ.Однако, хотя это не работает для вас (на основании вашего комментария), оно частично работает для меня:

  • Редактировать nbproject / build-impl.xml , как подробно описано вошибка.
  • Очистите и соберите проект.
  • После этого commons-codec-1.11.jar помещается в каталог dist / lib .
  • Однако я все еще не получил толстую банку.

Еще одна вещь, которую я попробовал, была {project}> щелкните правой кнопкой мыши> Свойства> Библиотеки ,затем отредактируйте поле Libraries Folder , изменив его с относительного пути на абсолютный путь.Это, казалось, не делало вещи лучше или хуже.

0 голосов
/ 21 сентября 2018

Один из способов решения этой проблемы, по-видимому, заключается в изменении вашего build-impl.xml.

Найдите следующее условие:

<condition property="do.mkdist">
    <and>
        <isset property="do.archive"/>
        <isset property="libs.CopyLibs.classpath"/>
        <not>
            <istrue value="${mkdist.disabled}"/>
        </not>
        <not>
            <istrue value="${modules.supported.internal}"/>
        </not>
    </and>
</condition>

И удалите сегмент, относящийся к modules.supported.internal, оставив вам:

<condition property="do.mkdist">
    <and>
        <isset property="do.archive"/>
        <isset property="libs.CopyLibs.classpath"/>
        <not>
            <istrue value="${mkdist.disabled}"/>
        </not>
    </and>
</condition>

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

...