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