java - 在清单文件中定义外部 jar 的正确方法
问题描述
我很难找出如何在 manifest.mf 中定义外部 jar。当我使用如下所示的类路径时,jar 文件不会被执行
Manifest-Version: 1.0
Sealed: true
Main-Class: org.test.MainClass
Class-Path: /Program Files (x86)/Testfolder/testlibrary/hibernate3.jar
/Program Files (x86)/Testfolder/testlibrary/org.springframework.web-3.1.1.RELEASE.jar
当我如下所示给出正确的完整类路径时,未找到或加载主类
Manifest-Version: 1.0
Sealed: true
Main-Class: org.test.MainClass
Class-Path: D:/Program Files (x86)/Testfolder/testlibrary/hibernate3.jar
D:/Program Files (x86)/Testfolder/testlibrary/org.springframework.web-3.1.1.RELEASE.jar
有谁知道我做错了什么?
解决方案
根据文档:
类路径属性
应用程序的清单可以指定一个或多个相对 URL,这些 URL 引用它所需的其他库的 JAR 文件和目录。这些相对 URL 相对于从中加载包含应用程序的代码库进行处理。
应用程序(或更一般地,一个 JAR 文件)使用 manifest 属性指定它需要的库的相对 URL
Class-Path
。如果在主机 Java 虚拟机上找不到其他库的实现,则此属性列出用于搜索其他库实现的 URL。这些相对 URL 可能包括应用程序所需的任何库或资源的 JAR 文件和目录。假定不以斜杠 ( ) 结尾的相对 URL/
是指 JAR 文件。例如:Class-Path: servlet.jar infobus.jar acme/beans.jar images/
在 JAR 文件的清单中最多
Class-Path
可以指定一个标头。目前,出于安全原因, URL 必须与JAR 文件的代码库相关。因此,远程可选包将源自与应用程序相同的代码库。
每个相对 URL 都根据从中加载包含应用程序或库的代码库进行解析。如果生成的 URL 无效或引用了无法找到的资源,则将其忽略。
推荐阅读
- c# - 如何将匿名类型转换为列表
在 C# 中使用 Linq to SQL - html - html css img 分辨率操作
- c++ - /usr/bin/ld: 找不到 -l
编译时出错(没有 sudo) - powershell - 确定属性的可能值
- algorithm - 确定层次结构中的两个节点是否已连接
- r - 以其他列为条件将常量添加到数据框列
- python - 在任意 X 坐标处确定 B 样条的值
- c# - Unity3D向右/向左移动失败
- java - 在 JPA-/CrudRepository 的自定义 @Query 中使用 SQL-IN 子句与列表或设置为传递参数?
- html - RDCOMClient 问题的 UTF-8 编码