0

我正在尝试运行“Hello World”示例。问题是我在尝试运行 HelloWorld.java 示例时不断收到以下错误...

Fatal error -- Quitting
java.util.NoSuchElementException: key 'jxta:HTTPTransportAdvertisement' not registered.
    at net.jxta.util.ClassFactory.getInstantiator(ClassFactory.java:355)
    at net.jxta.document.AdvertisementFactory.newAdvertisement(AdvertisementFactory.java:249)
    at net.jxta.platform.NetworkConfigurator.createHttpAdv(NetworkConfigurator.java:1833)
    at net.jxta.platform.NetworkConfigurator.<init>(NetworkConfigurator.java:528)
    at net.jxta.platform.NetworkConfigurator.newAdHocConfiguration(NetworkConfigurator.java:436)
    at net.jxta.platform.NetworkManager.configure(NetworkManager.java:321)
    at net.jxta.platform.NetworkManager.startNetwork(NetworkManager.java:402)
    at tutorial.helloworld.HelloWorld.main(HelloWorld.java:90)

现在通过挖掘代码并阅读 NoSuchElementException 来自于在配置中找不到 XML 元素或键的事实。好的,这很酷,但是当 NetworkManager.ConfigMode 为 ADHOC 时阅读文档,看起来您不需要配置文件。

我曾满怀希望地尝试关闭我的防火墙、主机和网络 IPS 和防病毒可能会有所帮助,但没有。使用 Sysinternals Process Monitor 我没有看到 eclipse.exe 或 java.exe 试图读取 PlatformConfig 文件,甚至没有寻找 reconf 文件。所以这再次让我相信(对或错)我不需要配置文件。

我在带有 JDK 1.8 的 Eclipse Neon 中使用来自 [ https://svn.java.net/svn/jxta-jxse~svn/ ,标签:2.7] 的 JXTA 2.7。我在我的项目中包含了来自https://sourceforge.net/projects/practicaljxta/files/的依赖项。

示例代码位于 tutorials/src/main/java/tutorial/HelloWorld/HelloWorld.java 路径中。

我想了解为什么 JXTA 无法注册 jxta:HTTPTransportAdvertisement 以及如何更正该问题。

4

1 回答 1

0

调试 JXTA/JXSE 代码我发现它正在寻找一个 META-INF 文件夹中的文件,该文件夹存在于构建的 jar 文件中。这是我在源代码构建中没有的东西。

一种可能的解决方案是构建您自己的 jar 文件并包含位于源 src/main/resources 中的 META-INF 文件夹,但我不能完全保证该方法。

我的解决方案是从https://oss.sonatype.org/service/local/repositories/releases/content/com/kenai/jxse/jxse/2.7/jxse-2.7.jar下载 JXSE 的二进制版本,它位于项目 Maven 存储库并将其与来自https://sourceforge.net/projects/practicaljxta/files/lib-dependencies-2.7.zip/download的 jxse-2.7.jar 所需的 jar 一起包含在我的项目中

于 2016-08-04T01:45:28.693 回答