gpt4 book ai didi

java - Coldfusion 不加载嵌套类的 jar 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:56 25 4
gpt4 key购买 nike

我正在通过将 .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 文件吗?

最佳答案

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

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

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

关于java - Coldfusion 不加载嵌套类的 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com