【发布时间】:2015-10-28 01:09:54
【问题描述】:
我使用 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 文件中设置了适当的东西,包括 Bnd Annotations 声明性服务。我在运行时也有所有必要的 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!
我想我理解第二条失败消息:该命令需要一个字符串才能工作。不过,我不明白第一次失败。
有谁知道为什么这个命令不起作用?是什么导致了这些 InvocationTargetExceptions?
更重要的是,我怎样才能让它们消失?
请高人指教……
【问题讨论】:
标签: osgi apache-felix gogo-shell