2014-10-02 6 views
0

Maven을 사용하는 IntelliJ에서 콘솔 응용 프로그램을 만들었습니다. 인 IntelliJ 내에서 I는 설치 명령에 보인다IntelliJ 내에서 Maven 프로젝트를 실행할 수 있지만 터미널에서는 실행할 수 없습니다.

터미널에서 그러나 내가

mvn Install -U 
java -classpath target/myApp-2.0-SNAPSHOT.jar MainClass 

(pom.xml 파일과 같은 디렉토리에) 다음 명령을 실행 ... 컴파일하고 문제없이 응용 프로그램을 실행할 수 있습니다 jar 파일을 아무 문제없이 빌드하십시오. 두 번째 명령은 내 의존성은 다음과 같습니다 내 pom.xml 파일에서 나에게 다음과 같은 오류

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonParseException 

을 제공

<dependencies> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.5.0</version> 
    </dependency> 
</dependencies> 

그것은 잭슨 종속성 당기는하지만 메신저 확실하지 메신저하지 않는 것이 나에게 보인다 여기에 누락되었습니다.

답변

1

마찬가지로 문제는 사용자의 항아리에 다른 항아리가 있어야한다는 것입니다. 프로그램을 실행할 때 -classpath 인수

2 매니페스트에 종속성을 추가 할 받는다는 항아리 - 플러그인을 사용하여 추가 위에서 언급 한 바와 같이

1 :

나는 3 개 솔루션을 참조 , 요청한 장소에서 의존성을 가지고 모든 것을 실행하면됩니다. 는 jarjar 같은 플러그인 http://maven.apache.org/shared/maven-archiver/examples/classpath.html#aAdd

3 패키지를 귀하의 항아리 내부의 종속성을 참조하십시오 http://sonatype.github.io/jarjar-maven-plugin/

이 당신에게

가 도울 수있는 희망 독립 항아리를 만들 것입니다.

1

Maven은 런타임 클래스 경로에만 영향을 미치지 않습니다 (컴파일 타임 클래스 경로 만). 클래스 경로에 종속성을 추가해야합니다.

+0

어떻게해야합니까? – Deslyxia

+0

@Deslyxia : jar 파일을 classpath에 추가 한 것과 같은 방법입니다. 윈도우에서는';', 리눅스에서는':'로 구분합니다. –

관련 문제