很抱歉另一个“找不到或加载主类”问题。
我是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!
答案 0 :(得分:1)
您的jar应具有与包结构相对应的目录结构;在您的情况下,包含src/main/java
,尽管这不是包前缀。使用-C
指定根目录:
jar cvfm MyCompany.jar manifest.txt -C target mycompany/App.class
编辑:另外,正如Kayaman所指出的,您需要包括.class
文件,而不是.java
文件。