编程语言
首页 > 编程语言> > java-Coldfusion无法加载jar文件的嵌套类

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

作者:互联网

我正在通过将.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凭据= 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的转换过程顺利进行.

标签:coldfusion,jar,google-oauth-java-client,java
来源: https://codeday.me/bug/20191122/2059140.html