执行jar错误找不到或加载主类

时间:2018-08-20 15:02:51

标签: java maven jar

很抱歉另一个“找不到或加载主类”问题。

我是Java新手。我搜索了一会儿,但找不到原因。

我的项目是用maven创建的非常简单的项目。

mvn archetype:generate -DgroupId=mycompany -DartifactId=faker -DinteractiveMode=false

pom.xml(默认,不变)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mycompany</groupId>
  <artifactId>faker</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>faker</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

和源代码(默认,不变)

package mycompany;

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

我用jar命令构建jar文件。

~$ jar cvfm MyCompany.jar manifest.txt  src/main/java/mycompany/App.java
# added manifest
# adding: src/main/java/mycompany/App.java(in = 705) (out= 352)(deflated 50%)

manifest.txt

~$ cat manifest.txt 
Main-Class: mycompany.App
# (has an empty new line here)

但是无论何时执行它,都会给我以下错误:

~$ java -jar MyCompany.jar 
Error: Could not find or load main class mycompany.App

哪里出问题了?

openjdk version "1.8.0_181"
Apache Maven 3.5.2

感谢@ohlec和@Kayaman,更具体地说,这是解决问题的方法。

# get App.class
~$ cd src/main/java/mycompany/ && javac App.java
# back to faker folder
~$ jar cvfm MyCompany.jar manifest.txt  -C src/main/java mycompany/App.class
~$ java -jar MyCompany.jar
# Hello World!

1 个答案:

答案 0 :(得分:1)

您的jar应具有与包结构相对应的目录结构;在您的情况下,包含src/main/java,尽管这不是包前缀。使用-C指定根目录:

jar cvfm MyCompany.jar manifest.txt  -C target mycompany/App.class

编辑:另外,正如Kayaman所指出的,您需要包括.class文件,而不是.java文件。