我想设置一个罐子清单,因此它加载了一个文件夹旁边的所有库(罐子)。是否有可能有一个罐子清单使用文件夹中的所有罐子
清单如下所示:
Manifest-Version: 1.0
Class-Path: libs/
Main-Class: path.to.my.class.Main
布局如下:
- MyJar.jar
- libs/
-----lib1.jar
-----lib2.jar
而且我试图像这样运行:
java -jar MyJar.jar
我也得到NoClassDefinition有关文件夹内jar中的类的错误。
如果有人很好奇,该文件夹可能包含在类加载期间处理的可选jar。这是'我不能使用硬编码或自动生成的。
有什么想法?
更新 改写了这个问题,因为这是目前不可能从清单本身。答案是唯一真正可行的,不需要提取罐子,虽然它也可以。
因此,作为总结,答案是否定的,如果您有未指定的依赖关系,则无法单独从清单文件完成。
AFIK JAR的类路径开始于'JAR'文件的根目录。除非要像Spring Boot或OSGI容器那样动态加载它们,否则不能将子类或JAR放在子目录中。 – 11thdimension
原来,可以这样做,你必须用JAR名称指定路径。检查此链接http://todayguesswhat.blogspot.com/2011/03/jar-manifestmf-class-path-referencing.html?_sm_au_=ivVTSRf571T1SvZP – 11thdimension
我早先遇到该链接,我的清单是基于此,但它doesn没有工作。它只能找到该文件夹中在类路径中定义的文件。单独的文件夹似乎不起作用。 (即libs /或./libs/) – javydreamercsw