Java Maven命令行执行错误ClassNotFoundException

Java Maven命令行执行错误ClassNotFoundException,java,maven,apache-kafka,apache-kafka-streams,Java,Maven,Apache Kafka,Apache Kafka Streams,我正在使用Kafka,我创建了一个简单的maven项目来使用Kafka Streams API。当我从intelliJ执行项目时,它运行正常。尝试从命令行运行项目时,出现以下错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/Serdes at pega.main(pega.java:18) Caused by: java.lang.ClassNo

我正在使用Kafka,我创建了一个简单的maven项目来使用Kafka Streams API。当我从intelliJ执行项目时,它运行正常。尝试从命令行运行项目时,出现以下错误:

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如下所示:

mvn clean
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>

这就是我得到错误的地方。你能帮我解决这个问题吗。(当我从intelliJ执行时,我提醒它运行正常)

尝试使用包层次结构而不是pega。希望它能有所帮助


java-cp target/s_order_project-1.0-SNAPSHOT.jar com.example.pega

它没有在终端上运行,因为所需的依赖项不在类路径中。它在IntelliJ中运行,因为依赖关系在IntelliJ IDEA的类路径中可用

您有两个运行选项:

  • 为了在终端上运行它,您需要为所有必需的JAR指定类路径
  • 或者简单地将下面的maven插件指定到
    pom.xml
    中,以生成fat jar(带有依赖项的jar)并在运行时运行
  • 
    org.apache.maven.plugins
    maven汇编插件
    3.1.1
    带有依赖项的jar
    组装
    包裹
    单一的
    

    希望这有帮助

    您正在尝试运行不包含所有依赖项的jar文件,因此可以通过maven assembly plugin或maven shade plugin创建一个可执行的ueber jar…第二个选项是枚举类路径中所有必需的依赖项,该插件可以帮助我尝试您的第二个解决方案,效果良好。非常感谢。
    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
    
    <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>