Maven命令行执行报错ClassNotFoundException
Maven command line execution error ClassNotFoundException
我正在使用 Kafka,我创建了一个简单的 maven 项目来使用 Kafka Streams API。当我从 intelliJ 执行项目时,它 运行s 正确。当我尝试从命令行 运行 项目时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/Serdes
at pega.main(pega.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.Serdes
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 1 more
java代码和pom.xml如下:
Pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>vodafone.vfgr.pega</groupId>
<artifactId>s_order_project</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-streams -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Pega.java
public class pega {
public static void main(String[] args) {
Properties properties = new Properties();
properties.put(StreamsConfig.APPLICATION_ID_CONFIG, "pega-app");
properties.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
properties.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000);
StreamsBuilder builder = new StreamsBuilder();
KStream<String, String> s_order = builder.stream("gg-input-topic", Consumed.with(Serdes.String(),Serdes.String()))
.selectKey((k,v) -> v);
s_order.to("pega-output-topic", Produced.with(Serdes.String(),Serdes.String()));
KafkaStreams streams = new KafkaStreams(builder.build(), properties);
streams.start();
System.out.println(streams.toString());
Runtime.getRuntime().addShutdownHook(new Thread(streams::close));
}
}
我在终端执行的命令如下:
mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< vodafone.vfgr.pega:s_order_project >-----------------
[INFO] Building s_order_project 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ s_order_project ---
[INFO] Deleting /home/christoforos/IdeaProjects/s_order_project/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.813 s
[INFO] Finished at: 2020-02-28T17:15:11+02:00
[INFO] ------------------------------------------------------------------------
mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< vodafone.vfgr.pega:s_order_project >-----------------
[INFO] Building s_order_project 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ s_order_project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.6.0:compile (default-compile) @ s_order_project ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /home/christoforos/IdeaProjects/s_order_project/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ s_order_project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/christoforos/IdeaProjects/s_order_project/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.6.0:testCompile (default-testCompile) @ s_order_project ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ s_order_project ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ s_order_project ---
[INFO] Building jar: /home/christoforos/IdeaProjects/s_order_project/target/s_order_project-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.474 s
[INFO] Finished at: 2020-02-28T17:15:23+02:00
[INFO] ------------------------------------------------------------------------
java -cp target/s_order_project-1.0-SNAPSHOT.jar pega
这就是我遇到错误的地方。你能帮我解决这个问题吗? (当我从 intelliJ 执行时我提醒它 运行s 正确)
尝试使用包层次结构而不是 pega.Hope 它会有所帮助。
java - cp target/s_order_project-1.0-SNAPSHOT.jar com.example.pega
终端上没有 运行ning,因为所需的依赖项不在类路径中。它在 IntelliJ 中是 运行ning,因为依赖项在 IntelliJ IDEA 的类路径中可用。
你有两个选择运行:
- 为了在终端上运行它,您需要为所有需要的 jar 指定类路径。
- 或者简单地将下面的 maven 插件指定到
pom.xml
中以生成 fat jar(具有依赖项的 jar)和 运行,因为你是 运行ning.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
希望对您有所帮助!
我正在使用 Kafka,我创建了一个简单的 maven 项目来使用 Kafka Streams API。当我从 intelliJ 执行项目时,它 运行s 正确。当我尝试从命令行 运行 项目时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/Serdes
at pega.main(pega.java:18)
Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.Serdes
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 1 more
java代码和pom.xml如下:
Pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>vodafone.vfgr.pega</groupId>
<artifactId>s_order_project</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-streams -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Pega.java
public class pega {
public static void main(String[] args) {
Properties properties = new Properties();
properties.put(StreamsConfig.APPLICATION_ID_CONFIG, "pega-app");
properties.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
properties.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000);
StreamsBuilder builder = new StreamsBuilder();
KStream<String, String> s_order = builder.stream("gg-input-topic", Consumed.with(Serdes.String(),Serdes.String()))
.selectKey((k,v) -> v);
s_order.to("pega-output-topic", Produced.with(Serdes.String(),Serdes.String()));
KafkaStreams streams = new KafkaStreams(builder.build(), properties);
streams.start();
System.out.println(streams.toString());
Runtime.getRuntime().addShutdownHook(new Thread(streams::close));
}
}
我在终端执行的命令如下:
mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< vodafone.vfgr.pega:s_order_project >-----------------
[INFO] Building s_order_project 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ s_order_project ---
[INFO] Deleting /home/christoforos/IdeaProjects/s_order_project/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.813 s
[INFO] Finished at: 2020-02-28T17:15:11+02:00
[INFO] ------------------------------------------------------------------------
mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------< vodafone.vfgr.pega:s_order_project >-----------------
[INFO] Building s_order_project 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ s_order_project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.6.0:compile (default-compile) @ s_order_project ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /home/christoforos/IdeaProjects/s_order_project/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ s_order_project ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/christoforos/IdeaProjects/s_order_project/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.6.0:testCompile (default-testCompile) @ s_order_project ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ s_order_project ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ s_order_project ---
[INFO] Building jar: /home/christoforos/IdeaProjects/s_order_project/target/s_order_project-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.474 s
[INFO] Finished at: 2020-02-28T17:15:23+02:00
[INFO] ------------------------------------------------------------------------
java -cp target/s_order_project-1.0-SNAPSHOT.jar pega
这就是我遇到错误的地方。你能帮我解决这个问题吗? (当我从 intelliJ 执行时我提醒它 运行s 正确)
尝试使用包层次结构而不是 pega.Hope 它会有所帮助。
java - cp target/s_order_project-1.0-SNAPSHOT.jar com.example.pega
终端上没有 运行ning,因为所需的依赖项不在类路径中。它在 IntelliJ 中是 运行ning,因为依赖项在 IntelliJ IDEA 的类路径中可用。
你有两个选择运行:
- 为了在终端上运行它,您需要为所有需要的 jar 指定类路径。
- 或者简单地将下面的 maven 插件指定到
pom.xml
中以生成 fat jar(具有依赖项的 jar)和 运行,因为你是 运行ning.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
希望对您有所帮助!