ClassNotFoundException用于运行具有依赖项的可执行jar的main类

时间:2018-05-16 16:21:55

标签: java jar executable-jar

我在这里找不到问题:

我使用maven插件创建了一个jar,但是狗不会打猎。

班级:

package com.foo.baitshop;

public class Design {

    public static void main(String args[]) throws IOException {

        int argLength = args.length;
    }
}

我将jar解压缩到内部并且META-INF文件夹位于根目录中并包含清单(MANIFEST.MF)。

看起来像这样:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: lwhite
Build-Jdk: 9.0.4
Main-Class: com.foo.baitshop.Design;

要运行,我在持有jar的目录中执行以下命令:

java -jar baitshop2-1.0-SNAPSHOT-jar-with-dependencies.jar

此环境中没有外部设置类路径。

错误消息是:

fm-mltp140:target lwhite$ java -jar baitshop2-1.0-SNAPSHOT-jar-with-dependencies.jar
Error: Could not find or load main class com.foo.baitshop.Design;
Caused by: java.lang.ClassNotFoundException: com/foo/baitshop/Design;

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我认为它是分号:

Main-Class: com.foo.baitshop.Design;

需要将其删除为:

Main-Class: com.foo.baitshop.Design

如果Maven正在生成此内容,则需要调试Maven配置以防止添加分号。可能在某处配置中有一个分号。

来自Oracle的相关doc