[英]Running Java program using mvn through command line
我試圖通過命令行運行Java程序TopicPublisher.java
。 通過Maven指定了幾個依賴項。
在帶有pom.xml
文件的目錄中,我運行了以下命令: mvn clean
, mvn package
和java -cp target/SOM_Enrichment-1.0-SNAPSHOT.jar TopicPublisher
。
我收到以下錯誤:
Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: om/solacesystems/jcsmp/JCSMPStreamingPublishEventHandler
下面是我的目錄樹的屏幕截圖:
任何想法如何解決這個問題?
[編輯]
Pom文件:
<?xml version="1.0" encoding="UTF-8"?>
http://maven.apache.org/xsd/maven-4.0.0.xsd“> 4.0.0
<groupId>CAMM</groupId>
<artifactId>SOM_Enrichment</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.solacesystems</groupId>
<artifactId>sol-jcsmp</artifactId>
<version>[10,)</version>
</dependency>
</dependencies>
在沒有看到完整的POM.xml
我假設您尚未將最終工件構建為“胖子”。 我的意思是說JAR不僅包含您自己的類,而且包含所有第三方依賴項。
您將需要使用Maven程序集插件或Maven陰影插件之類的工具來完成此操作。 從屏幕快照中,盡管我看到您正在使用IntelliJ,所以您顯然還應該能夠通過IDE運行,僅用於測試目的。
您的程序從pom.xml
的com.solacesystems
依賴項加載類,但是您的類路徑僅包含構建工件jar。 按照@Kerry的建議,構建一個胖jar,或使用exec-maven-plugin從命令行運行。 在您的項目目錄中(執行mvn package
),執行:
mvn exec:java -Dexec.mainClass=TopicPublisher
該插件根據pom中定義的依賴項構建classpath參數。 有關更多選項,請參見https://www.mojohaus.org/exec-maven-plugin/ 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.