2015-01-15 3 views
1

볼트 중 하나에서 타사 라이브러리 MITIE를 사용하는 스톰 토폴로지를 만듭니다. 문서별로 MITIE에는 실행에 필요한 필수 네이티브 라이브러리와 jar가 있습니다.폭풍 toplogy에서 타사 라이브러리를 사용할 때 java.lang.UnsatisfiedLinkError

는 그것은 예를 들어 자바 클래스와 같이 보이는 그것을 실행하는 스크립트 (run.sh)와 함께 패키지로 제공 :

export LD_LIBRARY_PATH=/opt/MITIE/mitielib 
export CLASSPATH=/opt/MITIE/mitielib/javamitie.jar:. 

javac NerExample.java 
java NerExample 

이 작동합니다. 그런 다음 위의 두 가지 내보내기가 포함되도록 ~/.bashrc 파일을 수정하여이 내보내기가 없어도 스크립트를 실행할 수 있습니다. 스크립트에서 내보내기 명령문을 제거하고 잘 실행됩니다.

내 생각에 ~/.bashrc에이 두 가지 내보내기를 작성하면 폭풍 토폴로지를 실행할 때 라이브러리 디렉토리를 선택하여 작업 할 수 있어야합니다.

폭풍 토폴로지를 실행할 때 어떤 이유로 작동하지 않는 것이 문제입니다. 나는 다음과 같은 오류 얻을 :

java.lang.UnsatisfiedLinkError: no javamitie in java.library.path 

내가 대답을 사방 보았다, 그리고이 피곤과 같이 내 pom.xml 파일에 확실한 받는다는 플러그인을 사용하여 :

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <forkMode>once</forkMode> 
       <argLine>-Djava.library.path=${basedir}/lib/mitielib</argLine> 
      </configuration> 
     </plugin> 

을하지만 아무것도 작동하는 것 같다 없습니다. 누구든지 네이티브 라이브러리를 자바 폭풍 토폴로지 프로젝트 내에서 작동하도록 할 수있는 방법을 알고 있습니까?

답변

0

storm.yaml 파일의 가능한 모든 구성을 조사한 후에 처음으로 놓친 경우를 제공하고이를 해결하기 위해 필요한 정보를 제공했습니다. 다음을 추가 :

java.library.path: "/opt/MITIE/mitielib" 

storm.yaml 및 재부팅 폭풍으로 모두 작동했습니다.

0

이론적으로 폭풍우의 lib 디렉토리 안에 항아리를 넣으면 clssspath에 포함됩니다. 또 다른 방법은 클러스터에 제출할 항아리 안에 모든 종속성을 패키징하는 것입니다.

관련 문제