2015-01-21 76 views
0

我正在運行一個OSGi包的奇怪問題。使用另一個OSGi包的類

我有兩個包,讓我們說B1B2B1出口包含一個類名Foo與方法包a.b.c

public JsonNode helloWorld() { 
    System.out.println("Hello World!"); 
    return null; 
} 

然後B2進口B1包,並嘗試使用類FooB1。我在編譯時沒有問題,在Felix中啓動捆綁包時,一切似乎都沒問題。

但是當B2是打電話使用helloWorld的方法,B2停止工作,不要拋出任何錯誤! 一些調試後,我的身影方法helloWorld的返回類型是事業,如果我改變JsonNodeString一切都按預期方式工作。

爲什麼我沒有錯誤,我菲利克斯控制檯?當返回類型是JsonNode時,爲什麼我不能調用helloWorld方法?

感謝您的幫助!

EDIT1:更多的信息,下面的方法不完全相同的漏洞:

public String helloWorld() { 
    System.out.println("Hello World!"); 
    JsonNode test = JsonNodeFactory.instance.objectNode(); 
    return test.asText(); 
} 

我在控制檯中的Hello World見!然後沒有什麼,沒有錯誤,沒有追蹤,就像程序選擇停在這裏等待!

EDIT2: 我有建築,我不知道這是否是重要的意思時,這樣的警告:

[WARNING] Bundle fr.aaa.ccc.bbbb:1.0.0 : Export javax.json, has 1, private references [javax.json.stream], 

警告刪除,仍然得到了同樣的comportement。

EDIT3: 我管理我的控制檯得到一個錯誤,我想我關閉找出什麼問題!

Caused by: java.lang.LinkageError: 
loader constraint violation: 
when resolving interface method "a.b.c.FooInterface.welcome(Ljava/lang/String;)Lorg/codehaus/jackson/JsonNode;" 
the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) 
of the current class, d/e/f/lasthope/Activator, 
and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) for the method's defining class, a/b/c/aa/bb/FooInterface, 
have different Class objects for the type org/codehaus/jackson/JsonNode used in the signature 
    at d.e.f.Activator.start(Activator.java:37) 
+0

請張貼堆棧跟蹤。 – TheLostMind 2015-01-21 10:53:42

+0

就像說,根本沒有堆棧跟蹤。我在helloWorld方法的調用之前和之後放了一條日誌消息。第一個日誌消息出現在控制檯中,但第二個日誌消息從未出現。沒有錯誤,沒有堆棧跟蹤,什麼都沒有>< – 2015-01-21 11:01:04

回答

0

我想你可以在BundleActivator中調用該方法。一個常見的問題是在例如啓動方法不記錄。因此,嘗試使用嘗試捕獲到helloworld的調用並打印或記錄異常。

我覺得跟JsonNode問題是捆B2沒有看到類或B1看到一個不同的類。確保兩個包導入包JsonNode是。

+0

我已經用System.out和printStackTrace圍繞helloWorld調用了try catch塊,並且登錄catch塊以確保我知道我是否到達那裏。 我的兩個包依賴於javax.json,我驗證,兩個在「Maven Dependencies」中獲得了相同的確切庫名和版本。 – 2015-01-21 13:09:50

+0

你的Manifest有一個JsonNode包的導入包嗎?確保你沒有嵌入Json類。如果你在某處爲你的包提供代碼,它將會有很大的幫助。 – 2015-01-23 06:17:45