use*_*212 0 coldfusion railo model-glue application.cfc
我正在尝试在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
Run Code Online (Sandbox Code Playgroud)
我做了一些测试,发现当Application.cfc中发生以下情况时:
<cfloop from="1" to="#arrayLen(mgInstances)#" index="i">
<cfset mgInstances[i].executeEvent(arguments.eventName, values) />
</cfloop>
Run Code Online (Sandbox Code Playgroud)
我收到了错误.如果我删除这部分,我开始得到:
Message Application context not loaded!
Error Code
org.coldspringframework.webApplicationContextProxy.cantLoadApplicationContext
Run Code Online (Sandbox Code Playgroud)
所以,我猜测在Application.cfc中,行:
<cfset var mgInstances = createObject
("component","ModelGlue.Util.ModelGlueFrameworkLocator").findInScope
(appScope) />
Run Code Online (Sandbox Code Playgroud)
失败了.
还有其他人有这个问题吗?有解决方案吗 谢谢!!!
需要考虑的一件大事:通过CFML语言的历史,它始终是按值传递数组的标准行为,而不是通过引用.从语言的早期开始就存在这种情况,与许多其他编程语言的行为相反,但是从什么时候CF有什么问题违反惯例?(例如,数组以1而不是0开始编号).
另一方面,Railo通过引用而不是值来传递数组作为其默认行为.您可以看到这可能会导致其他框架出现问题.为了解决此兼容性问题,Railo允许您使用cfargument标记的"passby"属性来指定任何param作为值或引用.像这样:
<cfargument name="myArray" type="array" required="true" passby="value" />
Run Code Online (Sandbox Code Playgroud)
当然,这意味着必须为Railo重写一些框架,因为这会破坏与Adobe ColdFusion的完全兼容性.
转移ORM现在完全打破了Railo以及此特定问题的结果,以及Railo和CF8之间的其他行为故障.Model Glue和其他现有的CF框架不会遭遇类似的故障.
小智 5
在Railo 3.1 final(或以下补丁之一)中,我们将在Railo管理员中有一个兼容性选项卡,允许您将passby值设置为Railo中的默认行为.然后,您可以启用此设置,从而使Transfer和ModelGlue III运行良好.这里的旁注是passby属性不会破坏现有的CF代码.它只被视为CFARGUMENT元数据.
我们诚实地将此视为Coldfusion中的错误,但由于兼容性要求,我们将调整此行为并使其在Railo Administrator中可选.
Gert Franz Railo开源
| 归档时间: |
|
| 查看次数: |
490 次 |
| 最近记录: |