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

在 Railo 3.1 最终版(或以下补丁之一)中,我们将在 Railo 管理员中有一个兼容性选项卡,允许您将 passby 值设置为 Railo 中的默认行为。然后,您可以启用此设置,从而使 Transfer 和 ModelGlue III 运行良好。这里只是一个旁注是 passby 属性不会破坏现有的 CF 代码。它只是被视为 CFARGUMENT 元数据。

老实说,我们将此视为 Coldfusion 中的一个错误,但由于兼容性要求,我们将调整此行为并使其在 Railo Administrator 中成为可选。

Gert Franz Railo 开源

于 2009-06-25T15:30:34.100 回答
5

需要考虑的一件大事:在 CFML 语言的历史中,通过值而不是通过引用传递数组一直是标准行为。与许多其他编程语言的行为相反,这从语言的早期就已经存在,但是从什么时候开始 CF 有任何违反约定的问题?(例如,数组以 1 而不是 0 开始编号)。

另一方面,Railo 通过引用而不是值传递数组作为其默认行为。您可以看到这会如何导致其他框架出现问题。为了解决这个兼容性问题,Railo 允许您使用 cfargument 标记的“passby”属性将任何参数指定为值或引用。像这样:

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

当然,这意味着必须为 Railo 重写一些框架,因为这破坏了与 Adob​​e ColdFusion 的完全兼容性。

由于此特定问题以及 Railo 和 CF8 之间的其他行为故障,现在 Railo 上的 Transfer ORM 已完全损坏。Model Glue 和其他现有的 CF 框架不太可能出现类似的故障。

于 2009-06-05T01:35:40.853 回答
0

我会将此记录为railo bug tracker中的错误。他们通常非常擅长解决这些错误,以便流行的冷融合框架在他们的平台上运行。

于 2009-06-03T12:10:14.117 回答