2015-02-03 4 views
4

Я пытаюсь использовать Mojo Keytool API от Codehaus - http://mojo.codehaus.org/keytool/keytool-api/index.htmlКак использовать API-интерфейс keytool от org.codehaus.mojo?

Я создал образец проекта и просто пытается выполнить changeAlias запрос через API.

Вот мой пример кода:

KeyToolChangeAliasRequest request = new KeyToolChangeAliasRequest(); 
request.setVerbose(true); 
request.setKeystore("keystore.ks"); 
request.setStorepass("keypass"); 
request.setAlias(oldAlias); 
request.setKeypass("keypass"); 
request.setDestalias(newAlias); 

DefaultKeyTool keyTool = new DefaultKeyTool(); 
JavaToolResult result = keyTool.execute(request); 
result.getExitCode(); 
result.getExecutionException(); 

Однако, когда я запускаю программу я получаю исключения нулевого указателя -

java.lang.NullPointerException 
at org.codehaus.mojo.keytool.DefaultKeyTool.createCommandLine(DefaultKeyTool.java:53) 
at org.codehaus.mojo.keytool.DefaultKeyTool.createCommandLine(DefaultKeyTool.java:33) 

Из-за плохой документации, я не могу найти как правильно использовать API.

ответ

2

Вы не можете использовать этот код таким образом. Это должно быть сделано в среде контейнера сплетения.

Вы можете видеть, где код разбивается (http://mojo.codehaus.org/keytool/keytool-api/xref/org/codehaus/mojo/keytool/DefaultKeyTool.html#53), что строитель имеет значение null, так как он должен быть введен через контейнер сплетения.

Если вы хотите, мы могли бы обсудить, как улучшить код, который будет более легко вызван из outisde (пожалуйста, если вы можете использовать пользователей проекта или рассылать список рассылки).

+0

Спасибо, Тони за ответ. Мое требование состоит в том, чтобы выполнять команды keytool из java, и я надеялся, что смогу использовать API mojo. Да, мы можем обсудить, как улучшить код, который будет легко вызываться из любого места, но пока я думаю, что буду придерживаться классов java.security. *. – Onkar