у меня есть следующий Java-код, который я хочу преобразовать в groovy:
String containerId = "545cdc81a969";
ExecCreateCmdResponse execCreateCmdResponse = dockerClient
.execCreateCmd(containerId)
.withAttachStdout(true)
.withCmd("sh", "-c", "sleep 5 && exit 5")
.exec();
ExecStartResultCallback execStartCmd =
dockerClient.execStartCmd(execCreateCmdResponse.getId())
.exec(new ExecStartResultCallback(System.out, System.err))
.awaitCompletion();
Моя текущая версия в groovy такова:
String id = "545cdc81a969";
def execCreateCmdResponse = dockerClient
.execCreateCmd(id)
.withAttachStdout(true)
.withCmd('sh','-c','sleep 5 && exit 5')
.exec()
dockerClient.execStartCmd(execCreateCmdResponse.getId())
.withDetach(false)
.exec(new ExecStartResultCallback(System.out, System.err))
.awaitCompletion()
Моя проблема в том, что я получаю следующую ошибку, когда пытаюсь запустить код groovy:
* What went wrong:
Execution failed for task ':werner'.
> No signature of method: com.github.dockerjava.core.command.ExecStartCmdImpl.exec() is applicable for argument types: (com.github.dockerjava.core.command.ExecStartResultCallback) values: [com.github.dockerjava.core.command.ExecStartResultCallback@6ce82155]
Possible solutions: exec(com.github.dockerjava.api.async.ResultCallback), exec(com.github.dockerjava.api.async.ResultCallback), every(), grep(), every(groovy.lang.Closure), grep(java.lang.Object)
Java-exec-Method имеет подпись:
public <T extends ResultCallback<Frame>> T exec(T resultCallback);
Я попытался преобразовать «новый ExecStartResultCallback (System.out, System.err)» в «ResultCallback», но это не сработало.
Есть ли способ заставить Groovy обрабатывать экземпляр как ResultCallback-Instance, чтобы вызывался правильный метод?
С уважением, марбон
stacktrace
. тогда только мы сможем вам помочь @marbon.ExecStartResultCallback
— это класс типаResultCallbackTemplate
, а не типResultCallback
, как сказано здесь ›› github.com/docker-java/docker-java/blob/master/src/main/java/ - person Vikrant Kashyap   schedule 18.04.2016ResultCallbackTemplate
— этоResultCallback
, как здесь сказано: github.com/docker-java/docker-java/blob/master/src/main/java/ - person tim_yates   schedule 18.04.2016