请在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.endswith命名空间,而不是com.intuit.oauth2.endswith。我需要做什么才能使用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=> (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 安装 artefacts 的说明中直接复制的。由于根本不理解 Maven,我假定这只是必须的事物。结果发现它并不是。而且没有它也能工作。感谢这份建议,我确实需要一些指导来先尝试简单的操作。我仍然有点困惑为什么它在 deps 树中显示正确(这就是为什么我假设依赖项行是正确的),但现在它工作的事实是我当前最关心的。再次感谢。
...