【问题标题】:Coldfusion not loading nested class of jar fileColdfusion没有加载jar文件的嵌套类
【发布时间】:2014-01-03 05:56:30
【问题描述】:

我通过将 .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();

这个&lt;cfset credential = createObject("java", "com.google.api.client.googleapis.auth.oauth2.GoogleCredential") /&gt; 可以很好地创建对象,但是当它被转储或在代码中调用 Builder() 方法时,转储不显示 Builder 方法,或者说分别找不到该方法。

当我从google-api-client-1.17.0-rc.jar 文件中提取类时,具有该方法的类作为GoogleCredential$Builder.class 存在

底线是 .jar 文件中的所有内容似乎都井井有条,但是当它们被添加到 CF 时,并非所有内容都在那里。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    之后从java到CF的转换过程很顺利。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2018-01-05
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多