Coldfusion没有加载jar文件的嵌套类

时间:2013-12-15 22:43:14

标签: java coldfusion jar google-oauth-java-client

我通过将.jar文件放在Coldfusion服务器的WEB-INF / lib文件夹中来加载Google的java客户端以进行服务帐户授权。可以通过以下方式创建java对象:

<cfset credential = createObject("java", "com.google.api.client.googleapis.auth.oauth2.GoogleCredential") />

但是如果java类具有ClassName$InnerClassName形式的任何内部类,则在转储对象时似乎不会加载它们。

具体来说,我尝试添加从这里下载的.jar文件:https://code.google.com/p/google-api-java-client/downloads/list

我想要转换为CF的代码是:

GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
        .setJsonFactory(JSON_FACTORY)
        .setServiceAccountId("[[INSERT SERVICE ACCOUNT EMAIL HERE]]")
        .setServiceAccountScopes(PlusScopes.PLUS_ME)
        .setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
        .build();

这个<cfset credential = createObject("java", "com.google.api.client.googleapis.auth.oauth2.GoogleCredential") />创建对象就好了,但是当它被转储或者在代码中调用了Builder()方法时,转储没有显示Builder方法,或者它表示无法分别找到方法

当我从google-api-client-1.17.0-rc.jar文件中提取类时,使用该方法的类就在GoogleCredential$Builder.class

最重要的是,.jar文件中的所有内容似乎都是有序的,但是当它们被添加到CF时,并不是所有内容都存在。

任何人都知道为什么CF没有完全加载.jar文件?

1 个答案:

答案 0 :(得分:3)

要让CF加载嵌套类,您需要像这样调用它:

<cfset credential_builder = createObject("java", "com.google.api.client.googleapis.auth.oauth2.GoogleCredential$Builder") />

之后,从java到CF的转换过程顺利进行。