그래서 몇 시간 동안 SO를 검색해 보았습니다. 그리고 저는 여기 벽돌 벽을 완전히 뛰어 넘고 있습니다.maven : jar를 JDK에서 제외하십시오.
내 문제는 아주 간단합니다. Maven을 사용하여 빌드하고 싶다는 (꽤 큰) 프로젝트가 있습니다. 그래서 모든 것을 자동화 할 수 있습니다. 하나의 큰 문제를 제외하고는 모든 것이 지금까지 잘 작동합니다.
"java-plugin"이라는 종속성이 있습니다. 원본 또는 작성자를 정확하게 모르지만 종속성이 종속 관계에 있습니다. - 자체 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 의존성에서 가져옵니다.
물론 두 클래스가 동일하지 않습니다. 물론 자바 플러그인 종속성이 JSObject
클래스의 'getWindow'메소드를 포함하므로 컴파일 오류가 발생합니다.
이상적인 상황은 Maven에서 jfxrt.jar
을 제외하는 것이지만, 그 방법에 대해서는 전혀 모른다. 다른 솔루션도 Maven으로 빌드 할 수있는 한 그렇게 할 것입니다. 참고 : 가능한 경우 Java에서 "보증"메커니즘을 사용하고 싶지 않습니다.이 라이브러리를 여러 개의 다른 서버에 반복해서 업로드해야하므로 배포가 크게 지연 될 수 있습니다 (우리는 항상 또 다른 업로드를 위해 지원 팀에 파일을 보냈습니다).
감사합니다. 더 나은 -
편집하는 것은
그래서, 내 플러그인 의존성은 JDK도 뭔가입니다! 나는 내 Java 플러그인이 필요 없으며 plugin.jar를 자동으로 포함하는 JDK를 충분히 가지고있다 (내 ${java.home}/lib/plugin.jar
에있다).
당신이 볼 수 있듯이이의 jfxrt.jar가 plugin.jar하기 전에, 먼저 :
는 지금이 상황이있다. 왜 Maven이 더 일반적으로 Java가 처음으로 netscape.javascript.JSObject
(jfxrt.jar에 있음)을 찾자 마자 멈추는 지 알 수 있습니다. 하지만 실제로 두 번째 JSObject 클래스를로드해야합니다.이 클래스는 불행히도 같은 패키지에 있고 같은 이름으로 존재합니다. 도대체 내가 어떻게해야 할까? Eclipse에서 Maven을 사용하지 않고 매력이없는 이유는 무엇입니까? Maven과 함께 IntelliJ에서 작동하지 않는 이유는 무엇입니까?
미리 감사드립니다.
[제안 사항] (http://maven.40175.n5.nabble.com/Removing-JDK-from-compile-classpath-td5713254.html)이 효과가 있는지 확인해보십시오. 방금 찾았습니다.) – watery
아니요, 그들은 도움이되지 못했지만 그것이 Maven 문제가 아니라 IntelliJ의 주요 문제라고 생각했습니다. 이 시간에 몇 시간을 잃어 버렸습니다 ... 고마워요! – testuser