0

Railo で MG アプリのテストを起動しようとしていますが、問題が発生しています。MG アプリにアクセスすると、次のようになります。

Railo 3.1.0.012 Error (Java.lang.classformaterror)
Message         Invalid index 16 in LocalVariableTable in class file
application_cfc$cf
Java Stacktrace

Invalid index 16 in LocalVariableTable in class file application_cfc
$cf
        at java.lang.ClassLoader.defineClass1(Native Method):-2
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621):621
        at java.lang.ClassLoader.defineClass(ClassLoader.java:401):401
        at railo.commons.lang.PhysicalClassLoader.loadClass
(PhysicalClassLoader.java:116):116
        at railo.runtime.PageSourceImpl.compile(PageSourceImpl.java:225):225
        at railo.runtime.PageSourceImpl.loadPhysical(PageSourceImpl.java:167):
167
        at railo.runtime.PageSourceImpl.loadPage(PageSourceImpl.java:102):102

少しテストを行ったところ、Application.cfc で次のことが発生することがわかりました。

<cfloop from="1" to="#arrayLen(mgInstances)#" index="i">
    <cfset mgInstances[i].executeEvent(arguments.eventName, values) />
</cfloop>

エラーが発生します。この部分を削除すると、次のようになります。

Message         Application context not loaded!
Error Code
org.coldspringframework.webApplicationContextProxy.cantLoadApplicationContext

したがって、Application.cfc の次の行を推測しています。

<cfset var mgInstances = createObject
    ("component","ModelGlue.Util.ModelGlueFrameworkLocator").findInScope
    (appScope) />

失敗しています。

他の誰かがこれに問題を抱えていますか? 解決策はありますか?ありがとう!!!

4

3 に答える 3

5

考慮すべき重要な点は、CFML 言語の歴史を通じて、配列を参照ではなく値で渡すことが常に標準的な動作であったことです。これは、他の多くのプログラミング言語の動作とは対照的に、言語の初期の頃から存在していたものですが、いつから CF は慣習に反する問題を抱えていたのでしょうか? (たとえば、0 ではなく 1 で番号付けを開始する配列)。

一方、Railo はデフォルトの動作として、値ではなく参照によって配列を渡します。これにより、他のフレームワークで問題が発生する可能性があることがわかります。この互換性の問題を解決するために、Railo では cfargument タグの「passby」属性を使用して、任意のパラメーターを値または参照で指定することができます。そのようです:

<cfargument name="myArray" type="array" required="true" passby="value" />

もちろん、これは、一部のフレームワークを Railo 用に書き直す必要があることを意味します。これにより、Adobe ColdFusion との完全な互換性が損なわれるからです。

転送 ORM は現在、Railo で完全に壊れており、この特定の問題の結果と、Railo と CF8 の間の動作のその他の不具合が原因です。Model Glue やその他の既存の CF フレームワークが同様の不具合に見舞われることはまずありません。

于 2009-06-05T01:35:40.853 に答える
5

Railo 3.1 final (または次のパッチのいずれか) では、Railo admin に互換性タブがあり、Railo のデフォルトの動作として passby 値を設定できます。この設定を有効にすると、Transfer と ModelGlue III がうまく動作します。passby 属性は既存の CF コードを壊さないということを補足しておきます。CFARGUMENT メタデータとして扱われるだけです。

正直なところ、これは Coldfusion のバグであると考えていますが、互換性の要件により、この動作を適応させ、Railo Administrator ではオプションにします。

ゲルト・フランツ・ライロ オープンソース

于 2009-06-25T15:30:34.100 に答える
0

これをrailo bug trackerにバグとして記録します。彼らは通常、これらのバグを解決して、人気のあるコールドフュージョン フレームワークが彼らのプラットフォームで動作するようにするのが得意です。

于 2009-06-03T12:10:14.117 に答える