当我将 1.7 版本复制到 Ant lib 文件夹时,为什么 Ant 使用 Velocity 1.4?
Why is Ant using Velocity 1.4 when I copy an 1.7 version into the Ant lib folder?
我有一个用 Ant 构建的项目。我的问题是它需要 Velocity 才能正确构建,但是当我将 Velocity 复制到 ant lib 文件夹 (1.7) 时,我可以在 Velocity 日志中看到它出于某种原因使用 1.4
:
Tue May 03 10:16:29 CEST 2016 [info] Starting Jakarta Velocity v1.4
这怎么可能?我检查了 MANIFEST
文件,我复制到 Ant 的版本确实是 1.7
。如果我删除它,Ant 构建将失败,所以我确定正在使用此 .jar,但在 velocity.log
文件中我看到 Velocity 1.4
启动。可能是什么问题?
1.4 以上的 Velocity 版本从 "Jakarta Velocity" 更名为 "Apache Velocity"。代码片段:1.4, 1.6.4, 1.7
显然你在 classpath 中有 Velocity 1.4,即使在 classpath 中也有 1.7。
回答更笼统的问题:
"Why version x.y is used if version x.z should be used instead?"
解决方案 #1(运行时)
- 获取您的 java 进程的 ID:
jps -v
- 获取class路径(和其他信息):
jinfo $pid
- 寻找多个速度罐。很可能速度 1.4 会在 1.7
之前
解决方案 #2(离线,假设您正在寻找 RuntimeInstance
class)
- 导航到您的 ant 发行版
- 运行
for i in **/*.jar; do jar -tvf "$i" | grep -Hsi RuntimeInstance && echo "$i"; done
命令将在所有 jar 中查找给定的 class 名称。这有助于万一 velocity 被打包在另一个罐子里(而不是作为单独的人工制品存在)
当然,您可以通过其他几种方式查看不同的版本 - 也许您修补了错误的 ant 分布,也许您的速度在系统 class 路径中的某个地方偷偷摸摸。然而,以上两者的组合应该突出版本不匹配的根本原因。
我有一个用 Ant 构建的项目。我的问题是它需要 Velocity 才能正确构建,但是当我将 Velocity 复制到 ant lib 文件夹 (1.7) 时,我可以在 Velocity 日志中看到它出于某种原因使用 1.4
:
Tue May 03 10:16:29 CEST 2016 [info] Starting Jakarta Velocity v1.4
这怎么可能?我检查了 MANIFEST
文件,我复制到 Ant 的版本确实是 1.7
。如果我删除它,Ant 构建将失败,所以我确定正在使用此 .jar,但在 velocity.log
文件中我看到 Velocity 1.4
启动。可能是什么问题?
1.4 以上的 Velocity 版本从 "Jakarta Velocity" 更名为 "Apache Velocity"。代码片段:1.4, 1.6.4, 1.7
显然你在 classpath 中有 Velocity 1.4,即使在 classpath 中也有 1.7。
回答更笼统的问题: "Why version x.y is used if version x.z should be used instead?"
解决方案 #1(运行时)
- 获取您的 java 进程的 ID:
jps -v
- 获取class路径(和其他信息):
jinfo $pid
- 寻找多个速度罐。很可能速度 1.4 会在 1.7 之前
解决方案 #2(离线,假设您正在寻找 RuntimeInstance
class)
- 导航到您的 ant 发行版
- 运行
for i in **/*.jar; do jar -tvf "$i" | grep -Hsi RuntimeInstance && echo "$i"; done
命令将在所有 jar 中查找给定的 class 名称。这有助于万一 velocity 被打包在另一个罐子里(而不是作为单独的人工制品存在)
当然,您可以通过其他几种方式查看不同的版本 - 也许您修补了错误的 ant 分布,也许您的速度在系统 class 路径中的某个地方偷偷摸摸。然而,以上两者的组合应该突出版本不匹配的根本原因。