1

我有一个相当长的 cfc 文件,大约 1800 行长,在 ColdFusion 8 中运行良好,但是在将我的开发系统升级到 ColdFusion 9 并进行一些测试后,我收到了 cfc 的编译错误,并且消息显示“分支目标偏移量太简称大”。我修改了该文件以消除一些未使用的功能并合并一个以使其更短,这解决了使其工作的问题。但是,当我升级到CF9时,为什么它现在死在我身上?其他人在以前或当前版本的 ColdFusion 中遇到过这个问题吗?除了修改cfc文件比如升级jvm,有没有其他解决办法?

编辑 如果您对我的问题有答案,太好了!发布那个,但不要浪费时间告诉我一些我已经知道的事情。如果您要发布回复,请仔细阅读问题,并且只有在您知道答案的情况下才能回答。不要进行谷歌搜索并发布我已经知道并用来使代码正常工作的废话。问题是,为什么它在 CF8 中有效,而现在在 CF9 中无效?除了我所做的之外,还有其他解决方案吗?

4

3 回答 3

5

如您所知,这是 JVM 固有的问题,CF9 可能已经向组件添加了更多的固有函数,如果这些方法都通过一个巨大的 switch 语句引用,并且使用 short 作为偏移量,我们的偏移量指针空间就更少了与每个后续版本一起工作。从 CF7 搬到 CF8 的人也有同样的问题。

所以简短的回答是否定的。

您发现的大多数建议基本上都告诉您将一个大方法拆分为一个较小的方法和几个辅助方法。我第一次遇到问题时,这适用于我拥有的大型 cfc。但是随着它变得越来越大,没有多少辅助函数可以修复它。最终它不得不被分成多个cfcs。

PS:这家伙说删除交易有帮助(CF7),但没有人会包裹我的电话,所以我猜这不是一个有保证的修复http://www.coldfusionmuse.com/index.cfm/2007/9/28/Branch .Target.Offset

编辑
看起来我之前的问题是一个不同的函数太大,将 CFC 拆分为多个 CFC 是错误的。从那以后,我将该问题方法拆分为更小的方法,并且能够将所有功能整合到一个 CFC 中。这就是它看起来的解决方案。

于 2011-10-26T23:01:06.363 回答
2

如果您还没有,请尝试在 CFAdmin 页面“调试和日志记录 > 代码分析器”中运行代码分析器。这是查找在 CF8 和 CF9 之间的语言中所做的一些更改的有用工具。

我们不得不更改几个变量名和函数名,因为 CF 在 9 中添加了它们。

还要在这里检查:

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7ff0.html

于 2010-01-08T17:39:43.780 回答
1

CF 版本:10 操作系统:Linux CentOS 6.0

确实遇到了类似的问题,我的 cfc 中有 1300 多行代码,并且有一天我得到了“分支目标偏移量..”错误。我试过了

  1. 代码分析器查找遗留的任何漏洞 - DID NOT FIX

  2. 编辑 cfc 以减少任何最后一点冗余代码或注释 - 减少了大约 20 多行代码 - 未修复

  3. 我将代码分成 2 个 cfc 并将一个扩展到另一个 - 未修复

  4. 我删除了任何不需要的查询和数组转储(测试的一部分):这有效

所以我建议确保您没有任何大数据内容的转储。希望这可以帮助。

于 2014-04-08T13:20:48.037 回答