1

ColdFusion 8 では問題なく動作する約 1800 行のかなり長い cfc ファイルがありますが、開発システムを ColdFusion 9 にアップグレードしていくつかのテストを行った後、cfc のコンパイル エラーが発生し、「Branch target offset too.略して大」。ファイルを変更して未使用の機能をいくつか削除し、統合して短くすると、問題が解決して機能するようになりました。しかし、それでも、CF9 にアップグレードしたとき、なぜそれが消えてしまったのでしょうか? ColdFusion の以前または現在のバージョンでこの問題に遭遇した人はいますか? jvm のアップグレードなど、cfc ファイルを変更する以外の解決策はありますか?

編集 私が持っている質問に対する答えがあれば、素晴らしいです! それを投稿しますが、私がすでに知っていることを教えて時間を無駄にしないでください. 回答を投稿する場合は、質問を注意深く読み、答えがわかっている場合にのみ回答してください。グーグル検索をしないで、私がすでに知っていて、コードを機能させるために利用したがらくたを投稿しないでください。問題は、CF8 では機能し、CF9 では機能しなかったのはなぜですか? 私がしたこと以外に他の解決策はありますか?

4

3 に答える 3

5

ご存知のように、これは JVM に固有の問題です。CF9 では、コンポーネントにより多くの固有関数が追加されている可能性が高く、すべてのメソッドが巨大な switch ステートメントを介して参照され、ショート ステートメントがオフセットとして使用されている場合、オフセット ポインター スペースが少なくなります。連続する各バージョンで動作します。CF7 から CF8 に移行した人も同じ問題を抱えていました。

したがって、短い答えはノーです。

基本的に、見つけたほとんどの推奨事項は、大きなメソッドを小さなメソッドといくつかのヘルパー メソッドに分割するように指示しています。初めて問題に遭遇したとき、これは私が持っていた大きなcfcで機能しました。しかし、それが大きくなると、それを修正するヘルパー関数の数はなくなります。最終的には、複数の CFC に分割する必要がありました。

PS: この人は、トランザクションを削除すると (CF7) が役に立ったと言いましたが、私の呼び出しをラップするものはありません。 .Target.Offset

編集
私の以前の問題は、大きすぎる別の関数だったようです.CFCを複数のCFCに分割するのは誤りでした. それ以来、私はその問題のメソッドをより小さなメソッドに分割し、すべての関数を 1 つの 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 OS:Linux CentOS 6.0

CFCに1300行以上のコードがあり、ある晴れた日に「ブランチターゲットオフセット..」エラーが発生するという同様の問題に直面しました。私は試した

  1. レガシーの抜け穴を見つけるためのコード アナライザー - DID NOT FIX

  2. cfc を編集して、冗長なコードまたはコメントの最後のビットを削除しました - 約 20 行以上のコードを削減しました - 修正しませんでした

  3. コードを2つのcfcに分割し、一方を他方に拡張しました-修正しませんでした

  4. クエリと配列の不要なダンプを削除しました(テストの一部):これは機能しました

そのため、大きなデータ コンテンツのダンプがないことを確認することをお勧めします。お役に立てれば。

于 2014-04-08T13:20:48.037 に答える