如何从命令行执行java主类

时间:2018-04-17 21:37:35

标签: java command-line compilation

我的课程:

package com.your.company.cli;

import com.github.domain.cli.Cli;
import com.your.company.utils.MySuperClass;

public class Hello {
    public static void main(String[] args) throws TechnicalException {
        new Cli().runcli(MySuperClass.class, args);
    }
}

在我的Eclipse上没问题:

enter image description here

我需要通过命令行运行我的类。 (经过Maven编译(mvn clean install))

java -cp .... ???? com.your.company.cli.Hello ... ???

编辑1:

我尝试java -jar myproject.jar

aucun attribut manifest principal dans myproject.jar

我尝试java -cp myproject.jar com.your.company.cli.Hello

不可能de trouver la classe principale com.your.company.cli.Hello

编辑2:

我尝试添加maven-jar-plugin,但我的结果是Maven jar(不是胖罐)。我正在寻找一个没有jar文件的commande行的解决方案( juste与Eclipse相同的行为)。

2 个答案:

答案 0 :(得分:1)

我找不到修改项目的解决方案:

mvn clean install
mvn exec:java -Dexec.mainClass=com.your.company.cli.Hello

答案 1 :(得分:0)

  • 您可以启动使用java -jar /target/myproject.jar创建的jar文件。

  • 您无法使用java -cp ...javac,因为您需要将所有java文件放在同一个文件夹中进行编译。

  • 因为生成错误aucun attribut manifest principal dans myproject.jar因为java找不到主类我建议你将它添加到你的pom.xml文件中

`

<build>
  <plugins>
    <plugin>
      <!-- Build an executable JAR -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>3.0.2</version>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.mypackage.MyClass</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
</build>

并提及主要班级的全名

[UPDATE]

  • 如果您有多个家属,并且想要将所有家属包含在最后一个罐子中,您可以使用maven-assembly-plugin这样:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <archive> <manifest> <mainClass>${mainClass}</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </execution> </executions> </plugin>

您必须替换 ${mainClass}与您的主要班级全名