Исключения, возникающие при использовании пользовательской команды Gogo
Я создал пользовательскую команду felix gogo, используя информацию из учебника bndtoools ( http://bndtools.org/tutorial.html).
Код используется ниже:
@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?
Что еще более важно, как я могу заставить их уйти?
Кто-то, пожалуйста, посоветуйте...
1 ответ
У меня просто была эта ошибка, потому что версия пакета org.apache.felix.gogo.runtime, рассчитанная на то, чтобы быть в моих Run Bundles, была плохой. Это было 0.11.0, когда у меня была ошибка.
Я удалил пакет и снова нажал "разрешить". Он нашел другую версию пакета 0.14.0, как вы видите на рисунке, и теперь он работает хорошо.