You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JAR子文件夹中主类的Class-Path属性正确配置方法

问题分析与解决方案

你的问题核心在于Class-Path属性仅用于指定JAR外部的依赖资源,无法引用JAR内部的子目录。JAR内部的类路径默认是JAR的根目录,所以当你的mypackage.Hello类位于JAR内部的folder/mypackage下时,类加载器会在JAR根目录下寻找mypackage/Hello.class,自然找不到。

正确配置方法(无需移动类文件)

1. 修改类的包声明

打开Hello.java,将包声明改为对应JAR内部的目录结构:

package folder.mypackage;

public class Hello {
    public static void main(String[] args) {
        // 你的业务代码
    }
}

重新编译生成Hello.class,保持JAR内的目录结构不变(即folder/mypackage/Hello.class)。

2. 修正MANIFEST.MF内容

删除无效的Class-Path属性,将Main-Class改为完整的全限定类名:

Manifest-Version: 1.0
Main-Class: folder.mypackage.Hello

验证运行

执行以下命令启动程序:

java -jar myHello.jar

此时类加载器会从JAR根目录下找到folder/mypackage/Hello.class,正常加载主类。

补充说明

如果坚持不想修改类的包名,唯一可行的办法是将folder目录从JAR中提取出来,放在myHello.jar的同级目录下,然后将MANIFEST.MF的Class-Path设为folder/,同时保留Main-Class: mypackage.Hello。但这种方式需要将类文件移出JAR,可能不符合你的需求。

内容的提问来源于stack exchange,提问作者Dave The Dane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:45:21