2024 年 Clojure 调查!(请分享您的看法!

欢迎!请参阅 关于 页面以了解更多此平台的工作方式。

0
Java Interop

我希望能够使用 Intuit提供的 QuickBooks 库。他们有一个 Java SDK。

https://github.com/intuit/QuickBooks-V3-Java-SDK

我的目标是使用他们的 OAuth2 库使 clojure 应用可以查询 QuickBooks API。

https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account#?id=Account

到目前为止,我一直在使用 OAuth v1,但现在它已被弃用,所以我需要尽快设置替代的 OAuth2 流。使用他们官方支持的库似乎很有意义。

我在 project.clj 文件中增加了以下这些行:

[com.intuit.quickbooks-online/ipp-v3-java-devkit-pom "6.0.2" :extension "pom"] [com.intuit.quickbooks-online/ipp-v3-java-data "6.0.2" :extension "pom"]
[com.intuit.quickbooks-online/ipp-v3-java-devkit "6.0.2" :extension "pom"] [com.intuit.quickbooks-online/oauth2-platform-api "6.0.2" :extension "pom"]

我运行了 lein deps,库从 Maven 成功下载。

然后我开启了 repl。然而,以上所有这些似乎只是给了我访问 com.intuit.ipp.data._ 命名空间,而不是 com.intuit.oauth2._。为了使用 SDK 中的 OAuth2 部分,我需要做什么?我看他们的示例应用,OAuth 库看起来我应该可以使用,但它们并不在我这里。

我的 Java 互操作经验的细微之处可以说是微乎其微,所以请尽量用简单的话来描述我可能犯的错误或需要注意的地方。谢谢。

1 个答案

+1

已选择
 
最佳答案

对我有效
user=> (导入'[com.intuit.oauth2.client OAuth2PlatformClient]) com.intuit.oauth2.client.OAuth2PlatformClient user=> ^D bfabry@18723-bfabry ~/C/c/quickbooks> cat deps.edn 12:14:35 {:deps {com.intuit.quickbooks-online/oauth2-platform-api {:mvn/version "6.0.2"}}}

你能分享更多关于你的设置和你在尝试什么吗?

感谢您查看这个问题,非常感谢。

我正在尝试使用OAuth2库,但尽管它显然被下载,我可以在lein deps :tree中看到它,但我似乎无法使用它。



我尝试使用"lein new qb"创建一个全新的项目,然后在project.clj中添加了以下行

[com.intuit.quickbooks-online/oauth2-platform-api "6.0.2" :extension "pom"]



我运行"lein deps :tree",并在输出中看到以下内容

$ lein deps :tree
 [clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]]
 [com.intuit.quickbooks-online/oauth2-platform-api "6.0.2" :extension "pom"]
   [com.fasterxml.jackson.core/jackson-databind "2.9.9"]
     [com.fasterxml.jackson.core/jackson-annotations "2.9.0"]
     [com.fasterxml.jackson.core/jackson-core "2.9.9"]
   [commons-codec "1.13"]
   [commons-lang "2.6"]
   [javax.annotation/javax.annotation-api "1.3.2"]
   [oauth.signpost/signpost-commonshttp4 "1.2"]
   [oauth.signpost/signpost-core "1.2.1.1"]
   [org.apache.ant/ant "1.10.6"]
     [com.sun.tools "1.8.0" :scope "system"]
     [org.apache.ant/ant-launcher "1.10.6"]
   [org.apache.httpcomponents/httpclient "4.5.3"]
     [commons-logging "1.2"]
   [org.apache.httpcomponents/httpcore "4.4.6"]
   [org.json/json "20160810"]
   [org.slf4j/slf4j-api "1.7.25"]
 [nrepl "0.6.0" :exclusions [[org.clojure/clojure]]]
 [org.clojure/clojure "1.10.0"]
   [org.clojure/core.specs.alpha "0.2.44"]
   [org.clojure/spec.alpha "0.2.176"]

所以我认为库已经找到并下载。

然后我打开了一个REPL,并尝试输入上面答案中显示的命令,结果得到了ClassNotFoundException...

qb.core=> (import '[com.intuit.oauth2.client OAuth2PlatformClient])
执行错误 (ClassNotFoundException) 在java.net.URLClassLoader/findClass (URLClassLoader.java:382)。
com.intuit.oauth2.client.OAuth2PlatformClient


我在OSX上,这是我的java -version,如果这可能相关的话。

openjdk 版本 "1.8.0_212"
OpenJDK 运行时环境 (AdoptOpenJDK)(构建 1.8.0_212-b03)
OpenJDK 64位服务器VM (AdoptOpenJDK)(构建 25.212-b03,混合模式)
by
我不太清楚在lein中':extension "pom"是做什么的,试着去掉它?
by
这完全是从如何使用Maven安装工件说明中直接复制的。由于我完全不明白Maven,我以为这是必须的。事实证明并非如此。不加它也能工作。非常感谢你,我显然需要一点指导,先尝试简单的事情。我仍然对它为什么在deps树中正确出现有点困惑(这就是我假设依赖项行是正确的),但是现在它能工作,这才是我目前关心的事情。再次感谢。
...