2015-10-28 29 views
2

我使用bndtoools教程(http://bndtools.org/tutorial.html#write-a-command-component)的信息創建了felix gogo自定義命令。使用gogo自定義命令時生成的異常

使用的代碼是下面:

@Component(properties = { 
    CommandProcessor.COMMAND_SCOPE + ":String=texter", 
    CommandProcessor.COMMAND_FUNCTION + ":String=text" 
}, 
provide = Object.class 
) 
public class SocketUser 
{ 
    private ActualUser aUser = new ActualUser(); 

    public SocketUser() 
    { 
     // TODO Auto-generated constructor stub 
    } 

    public void text(String aMessage) 
    { 
     aUser.textClients(aMessage); 
    } 

} 

注意,ActualUser類有一個叫做textClient()方法,該方法,現在,只打印出的消息。

我在構建和運行bnd文件(包括Bnd Annotations聲明性服務)中設置了適當的東西。我也在運行時擁有所有必需的Gogo包。

做一個「幫助」將導致命令列表顯示,包括以下內容:

felix:bundlelevel 
felix:cd 
felix:frameworklevel 
felix:headers 
felix:help 
    . 
    . 
    . 
scr:list 
texter:text 

其中「needle。:文本」是我添加的命令。

一切似乎都很好,只是當我嘗試使用文本命令我碰到下面的失敗消息:

g! text hello! 
gogo: InvocationTargetException: null 
g! text 
gogo: IllegalArgumentException: Cannot coerce text() to any of [(String)] 
g! 

我想我明白了第二次失敗的消息:該命令需要以工作爲字符串。不過,我不明白第一次失敗。

有誰知道爲什麼這個命令不工作?什麼導致這些InvocationTargetExceptions?

更重要的是,我該如何讓它們消失?

有人請指教...

回答

0

我只是有這個錯誤,因爲計算是在我運行捆綁了org.apache.felix.gogo.runtime捆綁的版本並不好。我有錯誤時是0.11.0。

enter image description here

我刪除了捆綁,並點擊 「解決」 了。它發現捆綁0.14.0的另一個版本,如圖所示,現在它運行良好。