2024 年 Clojure 状态调查! 中分享你的看法。

欢迎!请参阅 关于 页面了解有关这个网站的更多信息。

0
Java 互操作性

我希望能够使用 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 部分?我查找了他们的示例应用程序,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版本 "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树中仍然显示正确(这就是我为什么认为依赖项行是对的)这一点,我仍然有些困惑,但现在唯一关心的是它能工作。 再次感谢。
...