通过命令行使用mvn运行Java程序

时间:2018-07-11 20:19:39

标签: java maven

我正在尝试通过命令行运行Java程序Beast beast = new Beast(beastSpeed); Hero hero = new Hero(heroSpeed, beast); boolean isHeroFaster = hero.isMoreFast(); 。通过Maven指定了几个依赖项。

在包含TopicPublisher.java文件的目录中,我运行了以下命令:pom.xmlmvn cleanmvn package

我收到以下错误:

java -cp target/SOM_Enrichment-1.0-SNAPSHOT.jar TopicPublisher

下面是我的目录树的屏幕截图:

directory tree

有什么办法解决这个问题吗?

[编辑]

Pom文件:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: om/solacesystems/jcsmp/JCSMPStreamingPublishEventHandler

http://maven.apache.org/xsd/maven-4.0.0.xsd“>     4.0.0

<?xml version="1.0" encoding="UTF-8"?>

2 个答案:

答案 0 :(得分:2)

我没有看到完整的POM.xml,我假设您尚未将最终的工件构建为“胖子”。我的意思是说JAR不仅包含您自己的类,而且还包含所有第三方依赖项。

您需要使用Maven assembly pluginMaven shade plugin之类的东西来为您执行此操作。从屏幕快照中,尽管我看到您正在使用IntelliJ,所以您显然还应该能够通过IDE运行,仅用于测试目的。

答案 1 :(得分:2)

您的程序从com.solacesystems中的pom.xml依赖项中加载类,但是您的类路径仅包含构建工件jar。按照@Kerry的建议,构建一个胖jar,或使用exec-maven-plugin从命令行运行。从项目目录(执行mvn package的位置)中,执行:

mvn exec:java -Dexec.mainClass=TopicPublisher

该插件根据pom中定义的依赖项构建classpath参数。有关更多选项,请参见https://www.mojohaus.org/exec-maven-plugin/