我正在尝试运行我的第一个Java程序,一个与在线API(Github上的source)交互的示例脚本。
由于它具有依赖关系,因此我按照建议的步骤使用mvn test
和mvn package
,这似乎有效(请参阅output)。
但我不明白如何运行我刚刚编译(或打包?)的程序。 .java
文件包含public final class NesstarStudyLister
,因此基于pom.xml
文件,我尝试(在基目录中)以下命令:
mhermans@fyr:~/tmp/nesstar-api-demo$ java -cp target/nesstar_study_lister-1.0-SNAPSHOT.jar com.nesstar.demo.NesstarStudyLister
NoClassDefFoundError
中的results。
如何成功运行小型Java程序?
修改:
根据Dave Newton的推荐,我使用Exec Maven plugin,显然只是运行
mvn exec:java -Dexec.mainClass=com.nesstar.demo.NesstarStudyLister
在基目录中,完美地执行java程序。
Andriy Plokhotnyuk的解决方案也可以使用以下命令:
(edit pom.xml to include the <build>...</build> information)
mvn package
java -jar target/nesstar_study_lister-1.0-SNAPSHOT-jar-with-dependencies.jar
答案 0 :(得分:2)
最简单的方式通常是Exec Maven Plugin。
果壳:
您也可以使用Maven创建一个包含项目依赖项(jars)的目录并手动设置类路径,但是当您可以使用该插件时,IMO会很痛苦。
您还可以在单个文件中创建一个包含所有项目依赖项的jar,但这可能需要更多工作来明确包含/排除任何冲突的依赖项。 (但需要注意的是,这也可能是其他方法的问题。)
答案 1 :(得分:2)
添加以下插件配置以准备可执行jar:
<project>
....
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.nesstar.demo.NesstarStudyLister</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
然后转到目标目录并运行:
java -jar nesstar_study_lister-1.0-SNAPSHOT-jar-with-dependencies.jar
答案 2 :(得分:0)
你需要创建一个可执行jar文件,然后使用java -jar filedirectory / fileName.jar