如何使用SilverTunnel-NG在Java中建立TOR连接?

时间:2015-03-07 22:36:07

标签: java tor

我试图运行an example code。我在项目中包含了以下库:

  • SLF4J-jdk14-1.7.10.jar
  • SLF4J-API-1.7.10.jar
  • NETLIB-0.0.4-SNAPSHOT.jar
  • bcprov-jdk15on-1.50.jar
  • bcpkix-jdk15on-1.50.jar

显然这还不够,因为我收到了错误:

  

信息:欢迎来到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.jarbcpkix-jdk15on-1.50.jar我做了。

有人知道我在这里缺少什么吗?

3 个答案:

答案 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可能会处理所有依赖项。