我使用polymorpic_path
来实例化实现第三方jar文件中定义的Java createDynamicProxy
的Coldfusion类。我想将类传递给同一个jar的另一个类的构造函数:即Interface
。
当jar文件yuicompressor-2.4.8.jar驻留在ColdFusion应用程序的com.yahoo.platform.yui.compressor.JavaScriptCompressor
THIS.javaSettings
成员中指定的子目录中时,它运行良好。如果LoadPaths
不存在,即使jar文件存储在Coldfusion Administrator中设置的类路径中,它也不起作用。
我的Coldfusion代码:
THIS.javaSettings
<cfset oErrRep = createObject("component","cfc.ErrorReporter")>
<cfset jErrRep = createDynamicProxy(oErrRep, ["org.mozilla.javascript.ErrorReporter"])>
<cffile action="read" variable="inputString" file="#GetDirectoryFromPath( getCurrentTemplatePath() )#examples/jquery-1.8.2.js">
<cfset joInput = createObject("java","java.io.StringReader").init(inputString)>
<cfset joOutput = createObject('java','java.io.StringWriter').init() />
<cfset compr = createobject( "java", "com.yahoo.platform.yui.compressor.JavaScriptCompressor" ).init( joInput, jErrRep )>
缺少THIS.javaSettings
时收到错误:
无法投射
Application.cfc
类型的对象时出错 转换为java.lang.NoSuchMethodError
为不兼容的类型。这通常 表示Java中的编程错误,尽管它也可能意味着您 试图以不同的方式使用异物 设计的。
我想知道什么是行不通的。当java.lang.Exception
丢失或javaSettings
来电时,dynamicproxy是否会出现问题?
是否可以在类路径中使用jar文件中的接口?
我设置了一个带有工作样本的Github repository。
将“/lib/yuicompressor-2.4.8.jar”复制到ColdFusion服务器的类路径,从createobject().init()
注释THIS.javaSettings
行,重新启动ColdFusion并查看它是否失败。