컴파일 및 lib find하는 방법
>>[kafka@localhost kafka]$ javac ConsumerBasic.java --> java파일 컴파일
#import 파일 위치를 아는 경우
Javac -cp "kafka_2.13-3.6.0/libs/kafka-clients-3.6.0.jar" ConsumerBasic.java
(파일 위치) (컴파일하려는 java 파일)
#컴파일 후 실행
Java -cp "kafka_2.13-3.6.0/libs/kafka-clients-3.6.0.jar":. ConsumerBasic
#import 파일이 없거나 위치를 모르는 경우
ConsumerBasic.java:1: error: package org.apache.kafka.clients.consumer does not exist
import org.apache.kafka.clients.consumer.ConsumerRecord;
^
ConsumerBasic.java:2: error: package org.apache.kafka.clients.consumer does not exist
import org.apache.kafka.clients.consumer.ConsumerRecords;
^
ConsumerBasic.java:3: error: package org.apache.kafka.clients.consumer does not exist
import org.apache.kafka.clients.consumer.KafkaConsumer;
^
ConsumerBasic.java:4: error: package org.apache.kafka.common.serialization does not exist
import org.apache.kafka.common.serialization.StringDeserializer;
^
ConsumerBasic.java:20: error: cannot find symbol
KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
^
symbol: class KafkaConsumer
location: class ConsumerBasic
ConsumerBasic.java:20: error: cannot find symbol
KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
^
symbol: class KafkaConsumer
location: class ConsumerBasic
ConsumerBasic.java:24: error: cannot find symbol
ConsumerRecords<String, String> records = consumer.poll(100);
^
symbol: class ConsumerRecords
location: class ConsumerBasic
ConsumerBasic.java:26: error: cannot find symbol
for (ConsumerRecord<String, String> record : records) {
^
symbol: class ConsumerRecord
location: class ConsumerBasic
8 errors
=====
ConsumerRecord ?
:
[kafka@localhost kafka]$ grep org.apache.kafka.clients.consumer.ConsumerRecord `find . -name "*.jar"` (java는 jar파일)
Binary file ./kafka_2.13-3.6.0/libs/kafka-clients-3.6.0.jar matches
--
[kafka@localhost kafka]$ grep org.apache.kafka.common.serialization.StringDeserializer `find . -name "*.jar"`
Binary file ./kafka_2.13-3.6.0/libs/kafka-clients-3.6.0.jar matches
====
[kafka@localhost kafka]$ java -cp "kafka_2.13-3.6.0/libs/kafka-clients-3.6.0.jar":. ConsumerBasic (ConsumerBasic 실행)
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.kafka.common.utils.Utils.<clinit>(Utils.java:107)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:652)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:632)
at ConsumerBasic.main(ConsumerBasic.java:20)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 4 more
[kafka@localhost kafka]$ grep org.slf4j.LoggerFactory `find . -name "*.jar"` (또 lib 빠진 거 찾기)
Binary file ./kafka_2.13-3.6.0/libs/slf4j-api-1.7.36.jar matches