2017-01-13 4 views
0

아파치 카프카 스트림을위한 작은 테스트 프로그램을 만들고 싶습니다. 지금까지 내가 한 일은 다음과 같습니다.Apache Kafka Streams building and starting jar

  • Intellij를 설치하십시오.
  • git의 소스 코드를 복사하십시오.
  • 압축 해제 폴더에 gradle wrappergradle idea을 실행합니다.
  • Intellij에서 폴더를 가져옵니다.
  • streams/examples/src/main/java/... 아래에 새 Java 클래스를 만듭니다.
  • 실행 gradlew jar
  • examples/build/libs/...의 .jar 파일을 서버로 복사하십시오.

이제 실행하고 싶습니다.

Error: A JNI error has occurred, please check your installation and try again 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/streams/kstream/ValueMapper 
     at java.lang.Class.getDeclaredMethods0(Native Method) 
     at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
     at java.lang.Class.privateGetMethodRecursive(Class.java:3048) 
     at java.lang.Class.getMethod0(Class.java:3018) 
     at java.lang.Class.getMethod(Class.java:1784) 
     at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: org.apache.kafka.streams.kstream.ValueMapper 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

누군가가 내가 잘못 무슨 짓을했는지 알고 있나요 : 내가 가진 전부이 예외는,

java -cp kafka.jar *Class*을 시도하지만거야? 적절한 지시가 필요해.

+0

당신은 https://github.com/confluentinc/ 아래의 카프카 스트림 예제를 볼 수도 있습니다 예제 (폴더'kafka-streams'). 몇 가지 데모 응용 프로그램과 종단 간 통합 테스트 (임베디드 카프카 클러스터가 생성되므로이 경우 아무것도 설치하지 않아도 됨)가 있습니다. 이 예제를 사용하여 빌드 설정 (kafka-streams/pom.xml 참조)을 비롯한 설정을 이해할 수있을뿐만 아니라 자신의 앱을 만들기위한 템플릿으로 사용할 수 있습니다. –

답변

0

먼저 IntelliJ에서 응용 프로그램을 실행할 수 있습니다. 병을 조립하고이 병을 모든 서버에 복사 할 필요가 없습니다.

examples/build/libs/...의 .jar 파일을 서버로 복사하십시오.

"서버"란 무엇을 의미합니까? 브로커를 언급하면 ​​이보다 더 필요하지 않습니다. 원하는 곳에 응용 프로그램을 실행할 수 있습니다. 브로커와 동일한 서버에서 Streams 애플리케이션을 실행하는 것은 필수적인 것은 아니며 권장되지 않습니다.

또한 Kafka 소스 코드 전체를 다운로드해야 할 이유가 없습니다 (또는 브로커를 시작하기 위해 바이너리가 필요한 과정이지만, 이미 카프카 클러스터를 배포 한 경우에는 건너 뛸 수 있습니다). 더 좋은 방법은 새 빈 프로젝트를 시작하고 종속성을 kafka-streams에 추가하는 것입니다 (프로젝트에서 사용하려는 다른 라이브러리의 경우처럼).

은이 빠른 시작 가이드 아웃 : http://docs.confluent.io/current/streams/quickstart.html

또한 체크 아웃 할 수 있습니다이 예 : 는 https://github.com/confluentinc/examples/tree/3.1.x/kafka-streams

관련 문제