我有一个相当长的 cfc 文件,大约 1800 行长,在 ColdFusion 8 中运行良好,但是在将我的开发系统升级到 ColdFusion 9 并进行一些测试后,我收到 cfc 的编译错误,并且消息显示“分支目标偏移太大而短”。我修改了该文件以消除一些未使用的功能,并合并了一个文件以使其更短,这解决了问题以使其正常工作。但是,为什么当我升级到 CF9 后它就死了?还有其他人在以前或当前版本的 ColdFusion 中遇到过此问题吗?除了修改cfc文件例如升级jvm之外还有其他解决办法吗?
EDIT如果您能回答我的问题,那就太好了!发布该内容,但不要浪费时间告诉我一些我已经知道的事情。如果您要发表回复,请仔细阅读问题,只有在您知道答案的情况下才回答。不要进行谷歌搜索并发布我已经知道并用来使代码正常工作的废话。问题是,为什么在CF8中可以用,而在CF9中却不行呢?除了我所做的之外还有其他解决方案吗?
正如您所知,这是 JVM 固有的问题,CF9 可能向组件添加了更多固有函数,如果这些方法都是通过一个巨大的 switch 语句引用的,并使用短字符作为偏移量,那么我们的偏移指针空间就会更少与每个后续版本一起使用。从 CF7 迁移到 CF8 的人也遇到了同样的问题。
所以简短的回答是否定的。
您找到的大多数建议基本上都是告诉您将一个大方法拆分为一个较小的方法和几个辅助方法。我第一次遇到这个问题时,它对我拥有的大型 cfc 有效。但随着它变得越来越大,没有任何辅助函数可以修复它。最终它不得不被分成多个cfc。
PS:这家伙说删除交易有帮助(CF7),但没有人包装我的电话,所以我想这不是一个有保证的修复http://www.coldfusionmuse.com/index.cfm/2007/9/28/Branch.Target.Offset
Edit
看起来我之前的问题是一个不同的函数太大,将 CFC 拆分为多个 CFC 是错误的。此后,我将该问题方法拆分为更小的方法,并且能够将所有功能合并到一个 CFC 中。这看起来就是解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)