我正在尝试执行以下示例:https://cwiki.apache.org/confluence/display/kafka/0.8.0+producer+example
我用maven构建了这个项目,构建成功了。但是在执行jar时,我得到了以下错误。
[root@sandbox target]# java -cp kafka_code-1.0-SNAPSHOT.jar com.kafka.TestProducer 2
Exception in thread "main" java.lang.NoClassDefFoundError: kafka/producer/ProducerConfig
at com.kafka.TestProducer.main(TestProducer.java:19)
Caused by: java.lang.ClassNotFoundException: kafka.producer.ProducerConfig
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 1 more
但是,我的pom.xml看起来像:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kafka</groupId>
<artifactId>kafka_code</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>kafka_code</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.9.2</artifactId>
<version>0.8.1.1</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>jmxri</artifactId>
<groupId>com.sun.jmx</groupId>
</exclusion>
<exclusion>
<artifactId>jms</artifactId>
<groupId>javax.jms</groupId>
</exclusion>
<exclusion>
<artifactId>jmxtools</artifactId>
<groupId>com.sun.jdmk</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.3</version>
</dependency>
<dependency>
<groupId>com.yammer.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>com.github.ja-fra.zk-configuration</groupId>
<artifactId>zkconfig</artifactId>
<version>0.1.0</version>
</dependency>
</dependencies>
</project>
enter code here
1条答案
按热度按时间imzjd6km1#
kafka_code-1.0-snapshot.jar不是随依赖项一起构建的。有两种方法可以做这件事。要么将所有依赖项添加到库文件夹中,并在运行时将其作为类路径输入提供,要么将所有依赖类放入一个包中。您可以使用程序集插件将所有依赖项构建为一个。将程序集插件依赖项添加到pom.xml中的构建阶段。使用mvn构建jarassembly:single. 这将创建一个带有依赖项的jar,您可以使用它来运行kafka producer。