Maven项目执行命令

时间:2015-09-16 15:34:08

标签: java maven

以下是我的示例类文件:

package org.foo.tutorial;

public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}

为了执行项目(maven框架),我们运行:

>java -cp Something-1.0.SNAPSHOT.jar org.foo.tutorial.APP

以上命令运行正常,并为我提供输出' HELLO WORLD'。

但是,如果我省略上述命令中的第三个参数(org.foo.tutorial.APP),我会收到以下错误:

 Error: Could not find or load main class target.MavenTutorialApp-1.0-SNAPSHOT.jar

我的问题是:

当我提供整个' jar时,为什么groupId和app name会很重要?文件?

2 个答案:

答案 0 :(得分:1)

错误有点误导。您的java命令不正确,因为您未指定Something-1.0.SNAPSHOT.jar-cp选项的一部分,但java将其解释为

这就是java表现的方式

  

java命令启动Java应用程序。这是通过开始一个   Java运行时环境,加载指定的类,并调用它   班级的主要方法。

如果您的.jar文件包含清单中Main-Class标题指定的entry point,那么您只需运行

java -jar Something-1.0.SNAPSHOT.jar

答案 1 :(得分:0)

让我试着回答你的问题。

  

为什么在我提供时,groupId和app名称很重要   整个'jar'文件?

让我们把问题分成小部分 -

What is group id? - 项目组的ID。

What is artifactId? - 工件(项目)和非课程版本的ID是默认工件名称的一部分。

在jvm下运行java程序时,没有像你如何构建jar那样的效果,例如它是由maven或gradle构建过程甚至是命令行生成的。

重要的事情是jar文件和入口点或主要驻留的类。

这可能超出了这个问题的范围,但我感到很有用。

要从jar文件运行java程序,您可以像上面一样明确提到。您还可以通过添加清单文件来创建可执行jar文件,在该文件中定义可执行文件的入口点 -

Main-Class:org.foo.tutorial.APP

  1. How to create executable jar?
  2. maven maven-assembly-plugin也有助于打包可执行jar。 help
相关问题