3

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 の原因は何ですか?

さらに重要なことに、どうすればそれらをなくすことができますか?

誰かアドバイスください...

4

1 に答える 1