我正在试着运行一个"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进程监视器时,我没有看到eclipse.exe或java.exe尝试读取PlatformConfig文件,甚至没有查找reconf文件。因此,这再次使我相信(对或错)我不需要配置文件。
我使用的是Eclipse Neon中的[https://svn.java.net/svn/jxta-jxse~svn/,Tag: 2.7]的JXTA2.7和JDK1.8。我已经在我的项目中包含了来自https://sourceforge.net/projects/practicaljxta/files/的依赖项。
示例代码位于tutorials/src/main/java/tutorial/HelloWorld/HelloWorld.java路径上。
我想知道为什么JXTA不能注册jxta:HTTPTransportAdvertisement,以及如何纠正这个问题。
发布于 2016-08-04 09:45:29
调试JXTA/JXSE代码时,我发现它正在META-INF文件夹中查找一个文件,该文件夹存在于构建的jar文件中。这是我从源代码构建中没有的东西。
一种可能的解决方案是构建您自己的jar文件,并包含位于源src/main/resources中的META-INF文件夹,但我不能完全保证这种方法。
我的解决方案是从项目Maven存储库中的https://oss.sonatype.org/service/local/repositories/releases/content/com/kenai/jxse/jxse/2.7/jxse-2.7.jar下载JXSE的二进制构建,并将其与来自https://sourceforge.net/projects/practicaljxta/files/lib-dependencies-2.7.zip/download的jxse-2.7.jar所需的jar一起包含在我的项目中
https://stackoverflow.com/questions/38754735
复制相似问题