我正试图在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) />失败了。
还有其他人对此有意见吗?有什么解决方案吗?谢谢!
发布于 2009-06-05 01:35:41
需要考虑的一件大事是:在CFML语言的历史中,通过值传递数组而不是通过引用传递数组一直是标准行为。与许多其他编程语言的行为相反,这是自该语言最早出现以来就一直存在的东西,但从什么时候开始,CF就有违反约定的问题了?(例如,数组从1开始编号,而不是0 )。
另一方面,Railo的默认行为是按引用传递数组,而不是按值传递。您可以看到这会如何导致其他框架出现问题。为了解决这个兼容性问题,Railo允许你使用cfargument标签的'passby‘属性来通过值或引用来指定任何参数。如下所示:
<cfargument name="myArray" type="array" required="true" passby="value" />当然,这意味着一些框架将不得不为Railo重写,因为这破坏了与Adobe ColdFusion的完全兼容性。
由于这个特殊的问题,以及Railo和CF8之间行为上的其他小故障,Railo上的传输ORM现在已经完全崩溃了。Model Glue和其他现有的CF框架也会遇到类似的故障。
发布于 2009-06-25 15:30:34
在Railo 3.1最终版(或下面的补丁之一)中,我们将在Railo管理中有一个兼容性选项卡,允许您将passby值设置为Railo的默认行为。然后,您可以启用此设置,从而使Transfer和ModelGlue III正常运行。这里需要注意的是passby属性不会破坏现有的CF代码。它只是被视为CFARGUMENT元数据。
老实说,我们认为这是Coldfusion中的一个错误,但由于兼容性要求,我们将调整此行为,并在Railo Administrator中将其设置为可选的。
Gert Franz Railo开源
发布于 2009-06-03 12:10:14
我会将此记录为railo bug tracker中的错误。他们通常非常擅长解决这些错误,以便流行的coldfusion框架在他们的平台上工作。
https://stackoverflow.com/questions/942664
复制相似问题