bndtools チュートリアル ( http://bndtools.org/tutorial.html#write-a-command-component ) の情報を使用して、felix 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 Annotations 宣言型サービスを含め、ビルドと実行の bnd ファイルに適切なものを設定します。また、必要なすべての Gogo バンドルがランタイムに含まれています。
「ヘルプ」を実行すると、以下を含むコマンドのリストが表示されます。
felix:bundlelevel
felix:cd
felix:frameworklevel
felix:headers
felix:help
.
.
.
scr:list
texter:text
ここで、「texter:text」は追加したコマンドです。
テキストコマンドを使用しようとすると、次のエラーメッセージが表示されることを除いて、すべて問題ないようです。
g! text hello!
gogo: InvocationTargetException: null
g! text
gogo: IllegalArgumentException: Cannot coerce text() to any of [(String)]
g!
2 番目のエラー メッセージは理解できたと思います。コマンドを機能させるには、文字列が必要です。最初の失敗はわかりませんが。
このコマンドが機能しない理由を知っている人はいますか? これらの InvocationTargetExceptions の原因は何ですか?
さらに重要なことに、どうすればそれらをなくすことができますか?
誰かアドバイスください...