请在 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 流。使用它们官方支持的库对我来说是有意义的。

我已经将这些行添加到我的项目.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 部分?我看他们的示例应用程序,OAuth2 库看起来应该对我可用,但它们并不可用。

我对于 Java 互操作的高级细节的了解少得可怜,所以请用简单的词语描述我可能犯了什么错误,或者需要做得更好。谢谢。

1 回答

+1

已选择
 
最佳答案

对我有效
user=> (import '[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 version "1.8.0_212"
OpenJDK运行环境(AdoptOpenJDK)(build 1.8.0_212-b03)
OpenJDK 64位服务器虚拟机(AdoptOpenJDK)(build 25.212-b03,混合模式)
我在lein中实际上不确定":extension "pom"是做什么用的。试着移除它看看?
这原本是从有关如何安装Maven中复制的。因为根本不懂Maven,我假设这 sucked。结果发现并不需要。而且可以正常工作。感谢您的指引,我显然需要一些帮助来尝试简单的东西。我仍然对它为什么在deps树中正确显示(这就是我为什么认为依赖项行是正确的)感到轻微困惑,但现在它工作就可以了。再次感谢。
...