我正在尝试连接到Java (JAR)库,以便与"QuickBooks商人服务API“进行通信。
对API的每次调用都需要一个OAuth2访问令牌。我的第一步是使用QuickBooks提供的Java来获取访问令牌。
我从这个页面下载了“jar-with-truencies.jar”选项。根据Maven的说法,6.0.1是当前版本。
https://search.maven.org/search?q=a:oauth2-platform-api
我在网站根目录下创建了一个名为"java“的文件夹,并将该文件存储在该文件夹中。
oauth2-platform-api-6.0.1-jar-with-dependencies.jar
在Application.cfc中,我添加了这一行代码:
<!--- Application.cfc snippet --->
<cfset this['javaSettings'] = {
LoadPaths = ["#expandPath('/java')#"]
,loadColdFusionClassPath = true
,reloadOnChange = true
,watchInterval = 100
,watchExtensions = "jar,class,xml"
}>
在test.cfm文件中,函数中有以下代码行:
variables['oauth2Config'] = createObject("java", "com.intuit.oauth2.config.OAuth2Config").OAuth2ConfigBuilder(arguments.clientId, arguments.clientSecret).callDiscoveryAPI(Environment.SANDBOX).buildConfig();
在developer.intuit.com网站上的一个示例中,Java代码如下所示:
OAuth2Config oauth2Config = new OAuth2Config.OAuth2ConfigBuilder("clientId", "clientSecret").callDiscoveryAPI(Environment.SANDBOX).buildConfig();
当我运行代码时,我会得到以下错误消息。
Class not found: com.intuit.oauth2.config.OAuth2Config
我用几个不同的变体交换了"LoadPaths“键,但是都导致了相同的错误。
LoadPaths = ["/java"]
LoadPaths = ["./java"]
LoadPaths = ["./java/oauth2-platform-api-6.0.1-jar-with-dependencies.jar"]
我尝试修改初始化调用:
local['oauth2Config'] = createObject("java", "OAuth2Config").OAuth2ConfigBuilder(arguments.clientId, arguments.clientSecret).callDiscoveryAPI(Environment.SANDBOX).buildConfig();
这导致了基本相同的错误:
Class not found: OAuth2Config
我很确定我在Application.cfc中的Application.cfc结构中做错了什么。我希望Java方法会更容易一些,但我可能最终会使用Intuit所拥有的REST。我仍然必须使用OAuth2,我不确定cfoauth标记/函数是否适用于这个系统。
如果你看到什么能帮我解决这个问题的话,请告诉我。
发布于 2019-09-05 15:04:15
OAuth2ConfigBuilder
,因为它是内部类,需要稍微不同的语法:
"com.intuit.oauth2.config.OAuth2Config$OAuth2ConfigBuilder");createObject("java“Environment
也是jar中的一个类。必须在使用常量Environment.SANDBOX
之前创建对它的引用。CF/lib
(也包括slf4j )加载jar。切换到"org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;“似乎通过了error.java.lang.LinkageError:loadColdFusionClassPath = false
约束违反:当解析方法时,类加载器( coldfusion/runtime/java/JavaDynamicClassLoader)的实例.Application.cfc
this['javaSettings'] = {
LoadPaths = ["#expandPath('/java')#"]
,loadColdFusionClassPath = false
, ...
};
代码:
variables['environ'] = createObject("java", "com.intuit.oauth2.config.Environment");
variables['builder'] = createObject("java", "com.intuit.oauth2.config.OAuth2Config$OAuth2ConfigBuilder");
variables['oauth2Config'] = variables['builder'].init( arguments.clientId, arguments.clientSecret).
callDiscoveryAPI( variables['environ'].SANDBOX ).buildConfig();
https://stackoverflow.com/questions/57798356
复制相似问题