int128 / gradle-ssh-plugin

Gradle SSH Plugin
https://gradle-ssh-plugin.github.io
Apache License 2.0
320 stars 60 forks source link

NullPointerException on usage. #169

Open me4502 opened 9 years ago

me4502 commented 9 years ago
FAILURE: Build failed with an exception.

* Where:
Build file 'C:\workspaces\CraftMe\CraftMe\build.gradle' line: 189

* What went wrong:
Execution failed for task ':deploy'.
> java.lang.NullPointerException (no error message)

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':deploy'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:68)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
        at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
        at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
        at org.gradle.internal.Factories$1.create(Factories.java:22)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
        at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.NullPointerException
        at com.jcraft.jsch.JSch.removeAllIdentity(JSch.java:287)
        at com.jcraft.jsch.JSch$removeAllIdentity$0.call(Unknown Source)
        at org.hidetake.groovy.ssh.connection.ConnectionManager$_establishSession_closure1.doCall(ConnectionManager.groovy:137)
        at org.hidetake.groovy.ssh.connection.ConnectionManager$_establishSession_closure1.doCall(ConnectionManager.groovy)
        at org.hidetake.groovy.ssh.util.Utility.retry(Utility.groovy:43)
        at org.hidetake.groovy.ssh.util.Utility$retry$0.callStatic(Unknown Source)
        at org.hidetake.groovy.ssh.connection.ConnectionManager.establishSession(ConnectionManager.groovy:106)
        at org.hidetake.groovy.ssh.connection.ConnectionManager.establishViaGateway(ConnectionManager.groovy:79)
        at org.hidetake.groovy.ssh.connection.ConnectionManager.connect(ConnectionManager.groovy:53)
        at org.hidetake.groovy.ssh.connection.ConnectionManager$connect.call(Unknown Source)
        at org.hidetake.groovy.ssh.session.Executor$_wetRun_closure2.doCall(Executor.groovy:68)
        at org.hidetake.groovy.ssh.session.Executor.wetRun(Executor.groovy:66)
        at org.hidetake.groovy.ssh.session.Executor.execute(Executor.groovy:50)
        at org.hidetake.groovy.ssh.session.Executor$execute.call(Unknown Source)
        at org.hidetake.groovy.ssh.core.Service.run(Service.groovy:78)
        at org.hidetake.groovy.ssh.core.Service$run.call(Unknown Source)
        at build_9bza6loi9go4jliny8ze3bg2v$_run_closure7.doCall(C:\workspaces\CraftMe\CraftMe\build.gradle:116)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:554)
        at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:535)
        at org.gradle.api.internal.tasks.TaskMutator$1.execute(TaskMutator.java:77)
        at org.gradle.api.internal.tasks.TaskMutator$1.execute(TaskMutator.java:73)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
        ... 68 more

Used the same way as in the example.

The line in question that the stacktrace refers to is,

ssh.run {
me4502 commented 8 years ago

Is there any update on this?

me4502 commented 8 years ago

I just updated the stacktrace to 2.0.0

me4502 commented 8 years ago

It appears that only 1 thing is actually called in the method that has the nullpointerexception, something on the field that is set to null the previous line.

https://github.com/int128/groovy-ssh/blob/master/core/src/main/groovy/org/hidetake/groovy/ssh/connection/ConnectionManager.groovy#L136

It appears that the method should be used to set the value of that, instead of direct access to the field.

int128 commented 8 years ago

I could not reproduce this error. Would you tell me your environment such as Gradle version, JVM or OS? Template project works well.

me4502 commented 8 years ago

The issue is weird because I can only reproduce it with some projects.

I've tested this with Gradle 2.8 -> 2.13, running Java 8 1.8.0_77 x86_64, Windows 10.

The current project I'm having an issue with contains two sub-projects, both of which also make use of this plugin for deployment. I'll try only having the single deployment setup in place - it may have something to do with multiple.

Nope: Same when I remove the subprojects.

me4502 commented 8 years ago

Here's my main gradle file, http://pastebin.com/tPbf49Qe It imports common, which is here - http://pastebin.com/r0Zpd7iX

int128 commented 8 years ago

It seems that JSch 0.1.46 is loaded on your environment but 0.1.52 is expected. com.jcraft.jsch.JSch.removeAllIdentity(JSch.java:287) means 0.1.46. Maybe classpath is something wrong. Would you try below syntax to load the plugin?

plugins {
  id 'org.hidetake.ssh' version '2.0.0'
}

or comment out below, the plugin is available on JCenter.

        maven {
            name = "ssh"
            url = "https://dl.bintray.com/int128/maven/"
        }

Thanks.

int128 commented 8 years ago

JSch source: http://grepcode.com/file/repo1.maven.org/maven2/com.jcraft/jsch/0.1.46/com/jcraft/jsch/JSch.java

me4502 commented 8 years ago

I still get the issue if I add this,

configurations.all { resolutionStrategy { force 'com.jcraft:jsch:0.1.52' } }

me4502 commented 8 years ago

Also, this is my output of gradlew buildEnvironment

classpath +--- net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT | +--- com.github.tony19:named-regexp:0.2.3 | +--- net.sf.opencsv:opencsv:2.3 | +--- com.nothome:javaxdelta:2.0.1 | | --- trove:trove:1.0.2 | +--- org.ow2.asm:asm-debug-all:5.0.3 | +--- com.github.jponge:lzma-java:1.3 | +--- com.github.abrarsyed.jastyle:jAstyle:1.3 | +--- net.sf.trove4j:trove4j:2.1.0 | +--- org.apache.httpcomponents:httpclient:4.3.3 | | +--- org.apache.httpcomponents:httpcore:4.3.2 | | +--- commons-logging:commons-logging:1.1.3 | | --- commons-codec:commons-codec:1.6 | +--- com.google.code.gson:gson:2.2.4 | +--- com.google.guava:guava:18.0 | +--- net.minecraftforge:fernflower:2.0-SNAPSHOT | +--- org.apache.httpcomponents:httpmime:4.3.3 | | --- org.apache.httpcomponents:httpclient:4.3.3 (*) | --- com.cloudbees:diff4j:1.1 | +--- org.jvnet.localizer:localizer:1.12 | --- commons-io:commons-io:1.4 +--- org.spongepowered:mixingradle:0.4-SNAPSHOT | +--- com.google.guava:guava:17.0 -> 18.0 | --- org.ow2.asm:asm-debug-all:5.0.3 --- org.hidetake:gradle-ssh-plugin:2.0.0 --- org.hidetake:groovy-ssh:2.0.0 +--- org.slf4j:slf4j-api:1.7.7 +--- com.jcraft:jsch:0.1.52 +--- com.jcraft:jsch.agentproxy.connector-factory:0.0.7 | +--- com.jcraft:jsch.agentproxy.core:0.0.7 | +--- com.jcraft:jsch.agentproxy.usocket-jna:0.0.7 | | +--- com.jcraft:jsch.agentproxy.core:0.0.7 | | +--- net.java.dev.jna:jna:3.4.0 | | --- net.java.dev.jna:platform:3.4.0 | +--- com.jcraft:jsch.agentproxy.usocket-nc:0.0.7 | | --- com.jcraft:jsch.agentproxy.core:0.0.7 | +--- com.jcraft:jsch.agentproxy.sshagent:0.0.7 | | --- com.jcraft:jsch.agentproxy.core:0.0.7 | --- com.jcraft:jsch.agentproxy.pageant:0.0.7 | +--- com.jcraft:jsch.agentproxy.core:0.0.7 | +--- net.java.dev.jna:jna:3.4.0 | --- net.java.dev.jna:platform:3.4.0 --- com.jcraft:jsch.agentproxy.jsch:0.0.7 +--- com.jcraft:jsch:0.1.49 -> 0.1.52 --- com.jcraft:jsch.agentproxy.core:0.0.7

int128 commented 8 years ago

Would you try println ssh.version on the plugin 2.2.0? It will show version of jsch visible from the plugin.

me4502 commented 8 years ago

gradle-ssh-plugin-2.2.0 (groovy-ssh-2.2.0, jsch-0.1.52, groovy-2.4.4, java-1.8.0_74)

me4502 commented 8 years ago

My gradle cache doesn't even contain jsch-0.1.46, it only contains 0.1.52 and 0.1.53

int128 commented 8 years ago

Since 2.6.0 ConnectionManager class has been rewritten thoroughly. Please try it if possible.

daphil19 commented 5 years ago

+1 on this issue. Running with Gradle 5.1 and gradle-ssh-plugin 2.9.0