2016-08-03 83 views
0

我試圖運行「Hello World」示例。問題是我不斷從通過代碼周圍挖,做一些閱讀NoSuchElementException異常來自一個事實,讓試圖運行HelloWorld.java例如,當出現以下錯誤...JXTA配置問題:jxta:HTTPTransportAdvertisement未註冊

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) 

現在一個XML元素或鍵在配置中找不到。 OK,這很酷,但是當NetworkManager.ConfigMode是ADHOC時,閱讀文檔看起來好像不需要配置文件。

我曾嘗試過一些瘋狂的希望,關閉我的防火牆和主機和網絡IPS和防病毒可能會有所幫助,但沒有。使用Sysinternals進程監視器我沒有看到eclipse.exe或java.exe試圖讀取PlatformConfig文件,甚至查找重新配置文件。所以這再次讓我相信(對錯)我不需要配置文件。

我在JDK 1.8的Eclipse Neon中使用了[,標記:2.7]中的JXTA 2.7。我在項目中包含了https://sourceforge.net/projects/practicaljxta/files/的依賴關係。

示例代碼位於tutorials/src/main/java/tutorial/HelloWorld/HelloWorld.java路徑中。

我想了解爲什麼JXTA無法註冊jxta:HTTPTransportAdvertisement以及如何解決問題。

+0

稍微偏離主題:爲什麼你是否試圖運行死亡技術的示例代碼? https://en.wikipedia.org/wiki/JXTA#Status –

+0

@GregChabala該技術正是我正在尋找的,一個P2P框架構建另一個應用程序的頂部。如果沒有別的辦法,我應該讓它工作嗎?它會證明,即使P2P部分需要重寫,我想要做的事也可以完成。如果你知道JXTA的替代品,那麼我都會接受。乾杯! – therealdtw

回答

0

調試JXTA/JXSE代碼我發現它在構建的jar文件中存在的META-INF文件夾中查找文件。這是我從源代碼構建的東西。

一個可能的解決方案是構建自己的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這是在項目的Maven倉庫下載JXSE的二進制構建,包括它在我的項目沿所需的jar對jxse-2.7.jar從https://sourceforge.net/projects/practicaljxta/files/lib-dependencies-2.7.zip/download