【发布时间】:2016-10-20 22:39:29
【问题描述】:
IBM Cognos 在 /WEB-INF/lib/ 中生成包含大量 JAR 的 EAR 文件
在这些 JAR 中,有几个(即 idvisualizations_helpers.jar 和其他一些)在其 /META-INF/MANIFEST.MF 中包含以下内容:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: jvmwi3260sr10-20111207_96808 (IBM Corporation)
Main-Class: ${project.main.class}
Class-Path: ${relative.classpath}
这有效吗?我的意思是,谁将负责扩展这些 {} 占位符?对我来说,这甚至没有任何意义:如果执行 JAR 的软件知道它的主类,则没有理由在 Manifest 中提及它。 我只能想到两种解释。首先,这是一个简单明了的错误,在制作 JAR 时未能替换这些占位符。其次,这种表示法是有效的,并假定使用该 JAR 的 JVM 将为这些占位符提供值(但我不相信这一点,因为为每个此类 JAR 指定不同的值太不方便了)。
请有人解释一下这是什么意思。问题的更实际部分是在 Websphere Liberty 8.5.5 上会产生错误,因为“${relative.classpath}”不是有效的 URI。我想知道为什么在另一个运行完整 Websphere 的环境中不会发生这种情况(尽管那里的 Cognos 配置与我的不同)。
【问题讨论】:
-
您从 Liberty 收到的错误消息是什么?
-
这是 URISyntaxException:索引 1 处路径中的非法字符:${relative.classpath}
-
哦,还有一件事要补充。我不仅在另一个系统是完整的 Websphere 时运行 Liberty,而且我正在使用 Oracle JRE,而另一个系统正在使用 IBM(在 /IBM/WebSphere/AppServer/java/jre 下)。我会检查是否是这个原因。也许 IBM 正在扩展占位符(可能使它们为空但至少有效)或忽略它们。
-
我猜这是构建变量替换问题,而不是 JVM 差异。
-
@MaksimGumerov 你有没有解决你的问题?我正在尝试将属性占位符添加到我的清单文件中。
标签: java tomcat jar websphere war