【问题标题】:What does dollar signs do in manifest.mf class-path?manifest.mf 类路径中的美元符号有什么作用?
【发布时间】:2017-05-11 12:18:37
【问题描述】:

我有一个使用 Jersey 的 Spring Boot 项目。 spring-jersey3 对 HK2 有依赖:

<dependency>
    <groupId>org.glassfish.hk2</groupId>
    <artifactId>hk2</artifactId>
    <version>${hk2.version}</version>
</dependency>

HK2 的清单 Class-Path 如下所示:

Class-Path: $hk2-utils.$jar $javax.inject.$jar $hk2-api.$jar $aopallia
 nce-repackaged.$jar $config-types.$jar $hk2-core.$jar $hk2-config.$ja
 r $tiger-types.$jar $hibernate-validator.$jar $validation-api.$jar $j
 boss-logging.$jar $classmate.$jar $hk2-locator.$jar $javax.inject.$ja
 r $javassist.$jar $hk2-runlevel.$jar $class-model.$jar $asm-all-repac
 kaged.$jar

当我将该项目部署为针对 Liberty Profile 的战争时,我收到很多关于 HK2 清单文件的错误消息。对于 HK2 清单文件中 Class-Path 中的每个 jar 文件,我都会收到一个这样的错误:

The manifest class path $hk2-utils.$jar can not be found in jar file wsjar:file:<path to WLP server>/usr/servers/int/dropins/<name of application>.war!/WEB-INF/lib/hk2-2.5.0-b32.jar or its parent.

hk2-2.5.0-b32.jar 不包含任何 jar 库,但 HK2 类路径中的所有库都存在于应用程序的 lib 文件夹中。

所以我的问题是:清单类路径中的这些美元符号是什么意思?这种语法是否可能是我的 Liberty Profile 服务器抱怨的原因?

【问题讨论】:

  • 这对我来说只是一个错误

标签: java spring-boot websphere-liberty manifest.mf hk2


【解决方案1】:

我已经在 hk2 代码库中修复了这个问题。见:

Fix for Manifest Class Path

【讨论】:

  • 但是清单类路径是如何生成的呢?我们可以看到清单类路径指向的文件名称如下:hk2-utils.jar,但我们的 lib 文件夹包含相同的文件,文件名是:hk2-utils-2.5.0-b32.jar。所有 jar 都有版本后缀。当我手动更改清单类路径以指向 hk2-utils-2.5.0-b32.jar 时,WLP 日志停止抱怨该文件。
  • 我们确实在 maven 文件中使用自定义类路径来删除版本号。我不确定这方面的标准做法是什么
猜你喜欢
  • 2013-12-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 1970-01-01
  • 2014-12-15
相关资源
最近更新 更多