我使用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?
更重要的是,我該如何讓它們消失?
有人請指教...