gpt4 book ai didi

java - JAR 在 Lucee 上找不到 BouncyCaSTLeProvider

转载 作者:行者123 更新时间:2023-12-04 00:51:36 31 4
gpt4 key购买 nike

我们在 Adob​​e 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 后,将到达 Security.addProvider(new BouncyCastleProvider());通过 PayConfiguration,我们收到一个 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 的类加载器在这里做什么。我错过了什么?

最佳答案

老实说,我也不知道 Lucee 的类加载器在做什么,但是当通过 Lucee /lib 路径加载某些更复杂的 jar 时,这种错误似乎很常见。很可能某处正在发生“类(Class)冲突”。

Lucee 现在是基于 OSGi 的,这意味着避免这种情况的最佳方法是将第三方 java 库加载为 OSGi 包。一些库已经为 OSGi 打包,其他的可以很容易地转换。 More details here .

Amazon 库似乎不是 OSGi 友好的,尽管它可能不费吹灰之力就可以转换。

现在,我会查看 JavaLoader作为让它工作的最简单方法。我没有任何有效的亚马逊 key 来进行全面测试,但使用 JavaLoader 我至少能够调用 payConfig.setPrivateKey() 方法而不会出现 ClassNotFoundException 错误.

关于java - JAR 在 Lucee 上找不到 BouncyCaSTLeProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66037089/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com