2009-06-03 64 views
0

我正試圖在Railo上啓動一個測試MG應用程序,並且遇到了一個障礙。 當我參觀了MG應用程序,我得到:Model-Glue和Railo Application.cfc

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) /> 

失敗。

其他人有問題嗎?任何解決方案謝謝!!!

回答

0

我會將此記錄爲railo bug tracker中的一個錯誤。他們通常很擅長解決這些錯誤,以便流行的Coldfusion框架在他們的平臺上工作。

5

需要考慮的一件大事:通過CFML語言的歷史,它一直是按值傳遞數組的標準行爲,而不是通過引用。從語言的早期開始,這就是其他許多編程語言的行爲,但是從什麼時候起CF有任何違背慣例的問題呢? (例如數組從1開始,而不是0)。

另一方面,Railo通過引用傳遞數組而不是作爲其默認行爲。你可以看到這會如何導致其他框架的問題。爲了解決這個兼容性問題,Railo允許您使用cfargument標籤的'passby'屬性來指定任何參數值或參考值。像這樣:

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

當然,這意味着一些框架將不得不被改寫爲Railo,因爲這打破了Adobe ColdFusion,請完全兼容。

轉移ORM在Railo上現在完全被破壞,以及此特定問題的結果,以及Railo和CF8之間行爲的其他故障。 Model Glue和其他現有CF框架不會出現類似的故障。

+0

感謝您的這顆寶石!哦,實際上,我有Transfer在Railo上運行。 Hibernate也:) ColdBox與Railo一起保持良好狀態:) – user115212 2009-06-05 10:35:48

+0

Transfer ORM代碼(或您自己的現有傳輸)的多少修改。xml文件)是否需要讓Transfer在Railo上運行? – 2009-06-09 15:59:49

5

在Railo 3.1 final(或下列其中一個補丁)中,我們將在Railo管理中有一個兼容性選項卡,允許您將passby值設置爲Railo中的默認行爲。然後,您可以啓用此設置,從而使Transfer和ModelGlue III運行良好。這裏只是一個旁註是passby屬性不會破壞現有的CF代碼。它只會被視爲CFARGUMENT元數據。

我們誠實地將此視爲Coldfusion中的一個錯誤,但由於兼容性要求,我們將調整此行爲並使其成爲Railo管理員中的可選項。

格特弗蘭茲 Railo開源