2013-06-03 1 views
1

이전에 Storm 또는 Maven을 사용 해본 경험이 없었으며, 저는 초기 프로젝트를 진행하고 있습니다. 나는이 즉이 주어진 명령을 사용하여 자식 웹 사이트에 업로드 스타터 프로젝트를 컴파일 할 때 :이 명령을 사용하여 storm-startter에서 예제를 실행할 수없는 이유는 무엇입니까?

mvn compile exec:java -Dexec.classpathScope=compile -Dexec.mainClass=storm.starter.ExclamationTopology 

나는 느낌표 토폴로지 클래스를 실행할 수 있습니다,하지만이 명령을 사용할 때 :

java -cp ./target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology 

을 내가 할 수있는 그것을 실행하지 마십시오.

그건 그렇고, 나는 아파치의 사이트에서 maven 튜토리얼에서 두 번째 명령을 얻었다. 누군가 내가 여기서 잘못하고 있다고 지적 할 수 있을까?

PS :이 오류 http://pastebin.com/A1PQbB3r

+0

어떻게 실행할 수 없다는 것을 알고 계십니까? 오류가 무엇입니까? –

+0

@ChrisGerken 이것은 오류입니다 : http://pastebin.com/A1PQbB3r 새로운 pastelink로 명확하게하기 위해 편집 된 덧글 –

+0

나는 시동기 프로젝트를 모른다. 그러나 나는 폭풍 의존성이 빠져 있다고 생각한다. pom.xml을 연결할 수 있습니까? – mfussenegger

답변

1

귀하의 pom은 폭풍우 종속성의 범위가 "제공됨"으로 표시되어 런타임 클래스 경로에 있지만 jar-with-dependencies에는 없을 것임을 의미합니다. 범위를 "컴파일"로 변경하십시오.

+0

완벽한. 제가 말씀 드렸듯이 –

+0

에 감사드립니다. 저는 Storm과 Maven으로 시작했습니다. 그리고 몇 가지 튜토리얼을 살펴보고 의존성 범위가 무엇인지, 거기에 넣을 수있는 것들을 명시 적으로 설명하지 않았습니다. 나는 지금 그것을 온라인으로 보았고 지금 나는 알고있다. 다시 한번 감사드립니다. –

2

폭풍 항아리가 클래스 경로에 있지 않기 때문에 당신은 java.lang.NoClassDefFoundError가 타격하는 것입니다. 두 번째 명령은 폭풍 항아리와 폭풍/lib를 클래스 패스에 넣으면 예상대로 작동합니다.

+0

안녕 str1k3r, 그 작동하지 않았다. 같은 것을 얻었습니다 : http://pastebin.com/wGsyMYFQ 폭풍 항아리 파일을 추가하는 것에 대해 이야기하고 있습니다. github repo에서 다운로드 한 lib 폴더입니까? –

+0

나는 pastebin을 보았고 여전히 예상대로 명령을 실행하지 않는 것 같습니다. $ PATH에 0.8.2를 추가했습니다. java -cp ./target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar : (편집, 실수로 입력하십시오) 다음 명령을 실행하십시오. /Users/xxx/storm-0.8.2/storm-0.8.2.jar:/Users/xxx/storm-0.8.2/lib/*:/Users/xxx/storm-0.8.2/conf/storm.yaml storm.starter.ExclamationTopology – str1k3r

+0

맞습니다. 정말 미안해. 그게 효과가 있습니다. –

0

스톰 종속성의 범위는 로컬 모드 또는 클러스터에서 실행 중인지 여부에 따라 달라야합니다.

로컬 모드의 경우 범위를 "컴파일"로 설정하거나 범위 기본값이 "컴파일"이므로 태그를 비워 두어야합니다.

토폴로지를 클러스터에 제출하려면 범위를 "제공됨"으로 설정해야합니다. 그렇지 않으면 스톰 항아리가 토폴로지 항아리 안에 패키징되고 클러스터에 배포 할 때 클래스 패스에 2 개의 스톰 항아리가있게됩니다 : 토폴로지 내부 및 스톰 설치 디렉토리 내부의 토폴로지.

+0

그러나 폭풍우 항아리 파일 하나를 클러스터에 넣고 싶지 않고 단지 maven에서 패키지화 한 jar 파일에서 실행하고 싶다면 여전히 컴파일 된 것으로 유지할 수 있습니까? 나는 아직 클러스터 모드를 시도하지 않았지만 단지 묻고있다. –