我试图运行an example code。我在项目中包含了以下库:
显然这还不够,因为我收到了错误:
信息:欢迎来到silvertunnel-ng.org Netlib(版本0.0.4-SNAPSHOT)
线程“main”中的异常java.lang.NoClassDefFoundError:orT / spongycastle / jce / provider / BouncyCastleProvider(...)在TorTest.main(TorTest.java:16)
引起:java.lang.ClassNotFoundException:org.spongycastle.jce.provider.BouncyCastleProvider
第16行是(您可以在示例链接中看到整个文件):
final NetSocket topSocket = NetFactory.getInstance().getNetLayerById(NetLayerIDs.TOR_OVER_TLS_OVER_TCPIP).createNetSocket(null, null, TORCHECK_NETADDRESS);
我寻找答案如何包含这个BouncyCastleProvider,但我得到的是一个提示,包括bcprov-jdk15on-1.50.jar
和bcpkix-jdk15on-1.50.jar
我做了。
有人知道我在这里缺少什么吗?
答案 0 :(得分:1)
这对我来说很好(我使用maven来引入依赖项),这是我得到的依赖项列表
org.silvertunnel-ng:netlib:jar:0.0.3:compile
org.apache.directory.studio:org.apache.httpcomponents.httpcore:jar:4.1.2:compile
org.apache.httpcomponents:httpcore:jar:4.1.2:compile
org.apache.directory.studio:org.apache.httpcomponents.httpclient:jar:4.1.2:compile
org.apache.httpcomponents:httpclient:jar:4.1.2:compile
org.apache.httpcomponents:httpmime:jar:4.3:compile
org.bouncycastle:bcprov-jdk15on:jar:1.50:compile
org.bouncycastle:bcpkix-jdk15on:jar:1.50:compile
org.slf4j:slf4j-api:jar:1.7.7:compile
我从maven导入的唯一依赖是
<dependency>
<groupId>org.silvertunnel-ng</groupId>
<artifactId>netlib</artifactId>
<version>0.0.3</version>
</dependency>
有意思的是,班级org.spongycastle.jce.provider.BouncyCastleProvider
不在任何一个罐子里,而且我发现那个班级存在于unofficial fork of Bouncy Castle ...所以也许你有一个你的库叉。
如果你愿意我可以把它放在github中。
答案 1 :(得分:0)
我遇到了同样的问题,并使用Augusto的答案单独下载Maven列出的库。
使用以下组合使example code起作用至少:
成功测试后,我检查了这组依赖关系是否适用于netlib 0.0.4-SNAPSHOT,但这给出了相同的
java.lang.ClassNotFoundException: org.spongycastle.jce.provider.BouncyCastleProvider
错误。
答案 2 :(得分:0)
SilverTunnel-NG的Snapshot Version 0.0.4已经准备好在Android上运行(仍然没有在Android上运行),需要进行一项更改是使用未编写的BouncyCastle版本,因为Android拥有相同的软件包名称。这就是SpongyCastle被引入的原因。它只是原始BouncyCastle的副本,但名称不同。
因此,要使0.0.4-SNAPSHOT运行,您需要获得spongycastle。
SilverTunnel的快照也部署到Maven Central,因此maven可能会处理所有依赖项。