语境
我正在做一个使用JUNG 库的项目。我的自定义 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 个月的开发测试周期。我想把它作为最后的选择,如果可能的话最好避免它。
现在,我的问题是——
- 如果我用 3.2.1 更改(更新)2.1 会有什么问题?
- 使用此 JAR 的核心 CF 的哪些部分可能是?
- 为什么 CF 使用这个过时的 2.1(我觉得是)JAR 版本?
我做过的家庭作业
测试:为了不影响其他应用程序,我创建了一个单独的实例,将 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并解决问题。