Итак, я искал SO в течение нескольких часов и часов, и я полностью бегу в кирпичную стену здесь.maven: исключить jar из JDK
Моя проблема довольно проста: у меня есть (довольно большой) проект, который я хотел бы построить с Maven (так что я могу автоматизировать все это немного). Пока все работает нормально, кроме одной серьезной проблемы.
У меня есть зависимость, называемая «java-plugin». Я не знаю точно, источник или автор, но она зависела от зависимостей моей - я добавил ее к нашей собственной третьей стороне Nexus хранилище с именем, которое было указано в оригинальной банке.
Этот плагин будет добавлен от моей Nexus без каких-либо проблем, но она имеет следующую структуру:
- netscape
-- javascript
JSException.class
JSObject.class
JSUtil.class
-- security
ForbiddenTargetException.class
ParameterizedTarget.class
Principal.class
Privilege.class
PrivilegeManager.class
PrivilegeTable.class
Target.class
UserDialogHelper.class
UserTarget.class
- sun
-- plugin
...
-- plugin2
...
- com.sun.java.browser.plugin2
...
В чем проблема? Пока я работал в проекте на основе Eclipse, я поместил свой JDK в качестве «последнего» в моем пути к классам. Теперь это Maven и, по-видимому, Maven размещает JDK в первую очередь. В моем JDK у меня есть jfxrt.jar
(часть Java FX). Этот также содержит объект netscape.javascript.JSObject
(а также объект netscape.javascript.JSException
). С другой стороны, он не содержит объекта netscape.javascript.JSUtil
. Итак, Maven собирает JSObject
и JSException
из библиотеки JDK, а другие классы он выбирает из моей собственной зависимости от java-plugin.
Конечно, оба класса не совпадают. Конечно, теперь я получаю ошибки компиляции, поскольку зависимость java-plugin содержит метод getWindow в классе JSObject
, где нет библиотеки JDK.
Идеальная ситуация заключалась бы в исключении из Maven jfxrt.jar
, но у меня нет абсолютно никакой идеи о том, как это сделать. Любое другое решение тоже сделало бы, если бы я мог построить этот с Maven. Примечание. Я бы предпочел не использовать механизм «одобрения» в Java, если это возможно, поскольку это потребует многократной загрузки этой библиотеки на несколько разных серверов и вызовет огромные задержки при развертывании (поскольку нам всегда приходилось отправил файл в нашу службу поддержки для еще одной загрузки).
Спасибо!
EDIT
Итак, мой плагин зависимость является то, что также в JDK - еще лучше! Мне не нужен мой java-плагин, у меня достаточно с моим JDK, который включает plugin.jar автоматически (это в моем ${java.home}/lib/plugin.jar
).
Сейчас такая ситуация:
Как вы можете видеть, jfxrt.jar приходит первым, перед plugin.jar. Я вижу, почему Maven или Java в целом перестают смотреть, как только он находит первый netscape.javascript.JSObject
(который находится в jfxrt.jar). Но мне действительно нужно загрузить второй класс JSObject (к сожалению, он находится в том же пакете и с тем же именем). Как, черт возьми, я должен это делать? И почему это работает без очарования в Eclipse, когда я не использовал Maven, и почему он не работает в IntelliJ вместе с Maven?
Заранее благодарен!
Посмотрите, могут ли [эти предложения] (http://maven.40175.n5.nabble.com/Removing-JDK-from-compile-classpath-td5713254.html) работать на вас (я понятия не имею об этих, Я их нашел). – watery
Нет, они не помогли, но я подумал, что это главная проблема IntelliJ, а не проблема Maven. Потерял пару часов на этом ... Спасибо! – testuser