首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模型-胶水和铁道Application.cfc

模型-胶水和铁道Application.cfc
EN

Stack Overflow用户
提问于 2009-06-03 01:08:10
回答 3查看 501关注 0票数 0

我正试图在Railo上启动一个测试MG应用程序,但遇到了一个问题。当我访问MG应用程序时,我会得到:

代码语言:javascript
复制
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中发生以下情况时:

代码语言:javascript
复制
<cfloop from="1" to="#arrayLen(mgInstances)#" index="i">
    <cfset mgInstances[i].executeEvent(arguments.eventName, values) />
</cfloop>

我得到了错误。如果我删除这一部分,我开始得到:

代码语言:javascript
复制
Message         Application context not loaded!
Error Code
org.coldspringframework.webApplicationContextProxy.cantLoadApplicationContext

所以,我猜在Application.cfc中,这行代码:

代码语言:javascript
复制
<cfset var mgInstances = createObject
    ("component","ModelGlue.Util.ModelGlueFrameworkLocator").findInScope
    (appScope) />

失败了。

还有其他人对此有意见吗?有什么解决方案吗?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2009-06-05 01:35:41

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

另一方面,Railo的默认行为是按引用传递数组,而不是按值传递。您可以看到这会如何导致其他框架出现问题。为了解决这个兼容性问题,Railo允许你使用cfargument标签的'passby‘属性来通过值或引用来指定任何参数。如下所示:

代码语言:javascript
复制
<cfargument name="myArray" type="array" required="true" passby="value" />

当然,这意味着一些框架将不得不为Railo重写,因为这破坏了与Adobe ColdFusion的完全兼容性。

由于这个特殊的问题,以及Railo和CF8之间行为上的其他小故障,Railo上的传输ORM现在已经完全崩溃了。Model Glue和其他现有的CF框架也会遇到类似的故障。

票数 5
EN

Stack Overflow用户

发布于 2009-06-25 15:30:34

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

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

Gert Franz Railo开源

票数 5
EN

Stack Overflow用户

发布于 2009-06-03 12:10:14

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/942664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档