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=> (导入 '[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=> (导入 '[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,混合模式)
我不太清楚在lein中‘:extension "pom"’的作用是什么。试一下去掉它?
这直接是从Maven安装工件指令中复制来的。因为我完全不懂Maven,所以我假设这是必须的。但实际上并非如此。没有它也可以工作。感谢您的帮助,我确实需要一些指导来先尝试简单的操作。我仍然对为什么它正确地出现在deps树中感到轻微的困惑(这正是我假设依赖项行是正确的原因),但现在它确实可以工作了,这对我来说已经足够了。再次感谢。
...