I have an enterprise application that is developed using ColdFusion. The application is compiled using CF8’s complier (using CFcomple.exe) to enhance performance and prevents un-authorized access to the source code. This application is used by several customers in different countries. Each customer has at least two CF8 servers hosting the application. New features and enhancements are constantly developed and deployed into my customers’ servers each week.
Recently, I have upgraded one of the sites from CF8 server to CF9 server and tried to run the CF8 compiled code. And, to my surprise the CF8 compiled code cannot be run in CF9 server. Below are some of the errors captured by CF9 server’s log:
"Error","jrpp-3","04/08/11","17:45:10",,"coldfusion.runtime.CfJspPage._validateTagAttrValu e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; The specific sequence of files included or processed is: C:\VESALIUS\vx_uat\his\index.cfm, line: 2 "
java.lang.NoSuchMethodError: coldfusion.runtime.CfJspPage._validateTagAttrValue(Ljava/lang/String;Ljava/lang/String;Lj ava/lang/String;)Ljava/lang/String;
Initially, I thought it was the Java version compatibility problem. I have tried installing the latest Java SDK version into both CF8 server (for compilation) and CF9 server (for hosting). I have confirmed the “Java Virtual Machine Path” is set to the correct Java path. But still, the application cannot be launch from CF9 server with same type of error.
I have always thought Coldfusion is backward compatible. Code complied using earlier version of CF servers should have no problem running in later version of CF. Running application using pure source code and upgrading of all CF8 servers to CF9 at one go are not feasible options that I can choose.
Can someone please provide solution to my problem? Your help will be greatly appreciated.
I would expect the external interface to the CF engine - ie: the CFML - to be backwards compatible, but I would not expect the inner workings
to be, no.
That said, I would have thought the same as you would: that it's the JAVAC version, rather than the CF version, which would be significant here. But my reaction to your post was "oh? OK. Well fair enough I guess. It's not that surprising".
Just create two compiled versions: one for CF8, one for CF9.
Does code compiled for CF8 work on CF8.0.1 (or CF9 on CF9.0.1)?