在ColdFusion WEB-INF lib中更改JAR文件

时间:2013-03-20 11:21:12

标签: coldfusion apache-commons coldfusion-10

上下文

我正在开展一个使用JUNG libraries的项目。我的自定义Java代码和Jung库都放在wwwroot / WEB-INF / lib下。

请注意,某些JUNG类依赖于Apache commons-collections.jar,它也存在于同一文件夹中(默认情况下由CF提供)。

问题

我们正计划从CF7转到CF10,因此,我正在对项目中的所有代码进行试点测试,发现某些代码(使用JUNG)失败并且“找不到类”异常。

在调试和检查CF 10中给出的 commons-collections-2.1.jar 中的方法时,我发现它与CF 7中存在的方法不同。如果我将JAR更新为最新的commons-collections-3.2.1版本,代码工作正常,因为它找到了所有需要的类。

我可以更改我的代码库以适应默认的 commons-collections-2.1.jar ,但这将导致至少2-3个月的开发测试周期。我想把它作为最后的选择,如果可能的话,最好避免它。

现在,我的问题是 -

  1. 如果我用3.2.1更改(更新)2.1?
  2. 会出现什么问题
  3. 使用此JAR的核心CF的哪些部分?
  4. 为什么CF使用这个过时的2.1(我觉得如此)JAR版本?
  5. 我做过的家庭作业

    • 测试:为了不影响其他应用程序,我创建了一个单独的实例,将JAR更改为最新的3.2.1,在其上托管我的应用程序并完成一些测试。一切都很好,因为我没有遇到任何问题。但是,我担心CF中可能存在依赖于此JAR并可能会中断的区域。

    • cfusion \ lib :我发现commons-collections-3.2.1已存在于主lib(cfusion \ lib)文件夹中。所以,可能是,改变WEB-INF / lib中的JAR没有任何区别。

    • cfusion \ wwwroot \ WEB-INF \ lib :我已经读过放在此文件夹中的任何JAR文件仅用于应用程序而不是CF本身。我可能错了或完全误解了意思。纠正我!

    这个Q的答案将有助于我更多地了解CF并解决问题。

1 个答案:

答案 0 :(得分:2)

我想我找到了答案。

我误解了Adobe在制作CF10时改变了WEB-INF / lib中的commons-collections.jar。它没有,即使它确实(假设),它现在与我的问题有关。

在阅读@Miguel-F@Leigh的评论后,我检查了之前的安装并比较了lib更改。在此期间,我发现之前的开发人员之一有目的地将公共集合从CF的原始集合更改为自定义的集合,并使JUNG正常工作。我从JAR编译签名和与其相对应的小注释中确认了这一点。

现在,我已将相同的文件复制到新的CF 10中,我的报告工作正常。

带走

  1. 对/ WEB-INF / lib /中的JAR所做的更改不会影响整个CF安装,如果您正在处理自定义代码,重要的是您知道自己在做什么。
  2. 如果可能,请将此类更改记录为应用程序开发日志的一部分,以便当您离开该位置时,下一位开发人员可以毫不费力地了解这些自定义。
  3. 向社区讨论您的问题,在此过程中让他们了解问题,您可以找到答案。 :)
  4. 谢谢

    我要感谢@Miguel-F@Brian对系统配置的输入。还要感谢@Leigh为他的不同的方式?。它让我再次思考并找到答案。