2017-11-10 26 views
-3

특정 종속성 세트가있는 Maven 프로젝트가 있습니다. 종속성 중 하나는 다음과 같습니다.Maven은 기본적으로 패키지 의존성을 수행합니까?

<dependency> 
    <groupId>net.java.dev.jna</groupId> 
    <artifactId>jna</artifactId> 
    <version>4.5.0</version> 
</dependency> 

Eclipse에서 작동하는 한 모두 훌륭합니다. 이 클래스는 IDE에서 확실히 접근하면서

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/NativeLibrary 

: 나는 패키지와 (그 중요한 경우 명령 줄에서) 결과 jar 파일을 사용하려고 할 때,이 오류 메시지가 표시됩니다.

내 생각 엔 Maven이 기본적으로 프로젝트의 종속성을 패키징하지 않고 있지만이 경우 찾을 수없는 더 많은 클래스에 대해 불평하는 오류 메시지가 더 많이 표시되지 않는 이유는 무엇입니까?

+0

그것은 jar 프로젝트입니까, 아니면 전쟁 프로젝트입니까? – sidgate

+0

@sidgate 안녕하세요, 포장은'jar' –

+0

@ D.B로 설정되어 있습니다. 질문을 수정 함 –

답변

1

Maven은 프로젝트/구성 요소에 대해서만 jar 파일을 만듭니다. 여기에는 외부 항아리 (종속성)가 포함되지 않습니다. 항아리에 의존성의 내용을 포함 시키길 원한다면 팻 항아리 또는 쥬버 항아리를 만들어야합니다. uber jar의 경우 shade plugin을 사용할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 그것이 내 추측 이었지만이 프로젝트가 가지고있는 수십 가지 다른 의존성에 대해 불평하지 않는다는 사실을 어떻게 설명 할 수 있습니까? –

+1

ClassLoader가 아직로드하지 않았기 때문일 수 있습니다. –

+0

또는 클래스 패스에 이미 있습니다. – sidgate