Java通过CFCProxy使用ColdFusion类会引发ClassNotFoundException

时间:2018-07-31 16:33:08

标签: java coldfusion coldfusion-2016

场景: 我正在努力了解Java应用程序与驻留在同一JVM上的另一个ColdFusion应用程序进行通信的可行性。目的是在现有ColdFusion应用程序之上使用springboot创建微服务。

问题: 为了进行调查,我使用的是ColdFusion提供的CFProxy library。我已将cfusion jar添加到Java类路径中,并且我的Java应用程序正在正确编译。运行应用程序时,我收到ClassNotFoundException

代码:

import coldfusion.cfc.CFCProxy;
public class JavaIntegration {

public String sayHelloThroughCF(String name){
    String message = "";
    ClassLoader classLoader = getClass().getClassLoader();
    System.out.println("ClassLoader: " + classLoader);


    try{
        CFCProxy employeeCFC = new CFCProxy("C:\\Sites\\lb-bo-dev\\JavaIntegration\\employee.cfc", true);
        Object[] args = {name};
        message = (String) employeeCFC.invoke("sayCFHello", args);
    }
    catch(Throwable e) {
        e.printStackTrace();
    }
    return message;
    }
}

错误消息:

java.lang.NoClassDefFoundError: javax/servlet/Servlet
    at JavaIntegration.sayHelloThroughCF(JavaIntegration.java:11)
    at HelloWorld.main(HelloWorld.java:4)
Caused by: java.lang.ClassNotFoundException: javax.servlet.Servlet
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

注意: 如果我从ColdFusion触发代码,则能够成功完成交易。在这种情况下,我已将Java jar添加到Coldfusion类路径中。 即 ColdFusion--> Java --> ColdFusion正常工作。请在下面找到ColdFusion代码

index.cfm:

<cfscript>
    a = createObject("java", "cfintegration.JavaObject");
</cfscript>
<cfdump var="#a.sayHelloThroughCF('my name in cf')#"><br/>

Employee.cfc

<cfcomponent output="false" displayname="Employee">
    <cffunction name="sayCFHello" access="public" output="false" returntype="String">
        <cfargument name="name" required="true" />
        <cfreturn "ColdFusion says hello to " & arguments.name />
    </cffunction>
</cfcomponent>

0 个答案:

没有答案