Java 当我将1.7版本复制到Ant lib文件夹中时,为什么Ant使用Velocity 1.4?

Java 当我将1.7版本复制到Ant lib文件夹中时,为什么Ant使用Velocity 1.4?,java,ant,velocity,Java,Ant,Velocity,我有一个用Ant构建的项目。我的问题是,它需要Velocity才能正确构建,但当我将Velocity复制到ant lib文件夹(1.7)中时,我可以在Velocity日志中看到,出于某种原因,它使用了1.4: 2016年5月3日星期二10:16:29 CEST[信息]雅加达Velocity v1.4版启动 这怎么可能?我检查了MANIFEST文件,我复制到Ant的版本确实是1.7。如果我删除它,Ant构建将失败,因此我确定正在使用这个.jar,但是在velocity.log文件中,我看到velo

我有一个用Ant构建的项目。我的问题是,它需要Velocity才能正确构建,但当我将Velocity复制到ant lib文件夹(1.7)中时,我可以在Velocity日志中看到,出于某种原因,它使用了
1.4

2016年5月3日星期二10:16:29 CEST[信息]雅加达Velocity v1.4版启动


这怎么可能?我检查了
MANIFEST
文件,我复制到Ant的版本确实是
1.7
。如果我删除它,Ant构建将失败,因此我确定正在使用这个.jar,但是在
velocity.log
文件中,我看到velocity
1.4
启动了。有什么问题吗?

1.4以上的Velocity版本从“雅加达Velocity”更名为“Apache Velocity”。代码段:

显然,类路径中有Velocity 1.4,尽管类路径中也有1.7

回答更一般的问题: “如果应该使用x.z版本,为什么要使用x.y版本?”

解决方案#1(运行时)

  • 获取java进程的id:
    jps-v
  • 获取类路径(和其他信息):
    jinfo$pid
  • 寻找多个速度罐。速度1.4很可能在1.7之前
解决方案#2(离线,因为您正在寻找
RuntimeInstance
class)

  • 导航到您的ant发行版
  • 在**/*.jar中为i运行
    ;dojar-tvf“$i”| grep-Hsi运行时实例和echo“$i”;完成
    命令,该命令将查找给定类名的所有JAR。如果velocity被包装在另一个罐子中(而不是作为单独的人工制品出现),这会有所帮助

当然,还有一些其他方法可以让你看到不同的版本——也许你修补了ant的错误分布,也许你的速度潜藏在系统类路径的某个地方。然而,以上两种方法的结合应该突出版本不匹配的根本原因。

Velocity 1.4以上版本从“Jakarta Velocity”重新命名为“Apache Velocity”。代码段:

显然,类路径中有Velocity 1.4,尽管类路径中也有1.7

回答更一般的问题: “如果应该使用x.z版本,为什么要使用x.y版本?”

解决方案#1(运行时)

  • 获取java进程的id:
    jps-v
  • 获取类路径(和其他信息):
    jinfo$pid
  • 寻找多个速度罐。速度1.4很可能在1.7之前
解决方案#2(离线,因为您正在寻找
RuntimeInstance
class)

  • 导航到您的ant发行版
  • 在**/*.jar中为i运行
    ;dojar-tvf“$i”| grep-Hsi运行时实例和echo“$i”;完成
    命令,该命令将查找给定类名的所有JAR。如果velocity被包装在另一个罐子中(而不是作为单独的人工制品出现),这会有所帮助

当然,还有一些其他方法可以让你看到不同的版本——也许你修补了ant的错误分布,也许你的速度潜藏在系统类路径的某个地方。但是,以上两种方法的结合应该突出显示版本不匹配的根本原因。

您是否尝试使用
-diagnostics
选项运行
ant
?它为您提供了一些加载jar的细节。不,我使用了
-debug
选项,类路径上只有
1.7
.jar。您是否尝试使用
-diagnostics
选项运行
ant
?它提供了一些关于jar加载的细节。不,我使用了
-debug
选项,类路径上只有
1.7
.jar。