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