【发布时间】:2021-05-08 05:59:22
【问题描述】:
我们已在 Adobe ColdFusion 中成功使用 AmazonPay API for Java (amazon-pay-api-sdk-java-2.2.2.jar)。我们最近介绍了 Lucee(在 Jetty 上,也在 OpenJDK 8 上运行)并尝试运行相同的代码(相关摘录):
payConfig = createObject("java", "com.amazon.pay.api.PayConfiguration").init();
payConfig.setPrivateKey("...");
但是,在致电setPrivateKey(将通过PayConfiguration 到达Security.addProvider(new BouncyCastleProvider());)时,我们会收到java.lang.ClassNotFoundException:
lucee.runtime.exp.NativeException: org.bouncycastle.jce.provider.BouncyCastleProvider
at com.amazon.pay.api.PayConfiguration.setPrivateKey(PayConfiguration.java:77)
[...]
at java.lang.Thread.run(Thread.java:823)
Caused by: java.lang.NoClassDefFoundError: org.bouncycastle.jce.provider.BouncyCastleProvider
... 57 more
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider not found by amazon.pay.api.sdk.java.2.2.2 [49]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1597)
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
at java.lang.ClassLoader.loadClass(ClassLoader.java:881)
... 57 more
我们已将所有依赖项(bcprov-jdk15on-1.65.jar 是 BouncyCastle)放在 /lucee-server/context/lib 中。在 .cfm/.cfc 中创建 BouncyCastleProvider 确实可以按预期工作:createObject("java", "org.bouncycastle.jce.provider.BouncyCastleProvider").init()
我不明白 Lucee 的类加载器在这里做什么。我错过了什么?
【问题讨论】:
-
我在他们的 Github 存储库或 mvn 上找不到亚马逊 jar 的 2.2.2 版本。当前版本是 3.6.5,似乎可以与 Lucee 一起使用(来自一个非常快速的测试)。
-
您使用的是哪个版本的 Lucee 和 ColdFusion?
-
@CfSimplicity Release on GitHub 或 on Maven。我尝试了 Lucee 版本
5.3.7.47和5.3.8.139-RC。您提到的版本是“旧”的 Amazon Pay API v1。 -
啊,抱歉。我刚刚搜索了“amazon pay java”,结果就是这样。
标签: java coldfusion bouncycastle apache-felix lucee