Several of our developers who are using Linux have problems when using a
relative path for JAVA_HOME and changing the working dir for tests.
Adam seemed to fix one problem with this with a checkin right before preview-3,
but we still seem to have issues.
Now we get exceptions like this for every unit test:
Failed to dispatch message
org.gradle.messaging.dispatch.methodinvocat...@75b2a5bd.
org.gradle.messaging.dispatch.DispatchException: Failed to dispatch message
org.gradle.messaging.dispatch.methodinvocat...@75b2a5bd.
at
org.gradle.messaging.dispatch.ExceptionTrackingDispatch.dispatch(ExceptionTrackingDispatch.java:34)
at
org.gradle.messaging.dispatch.AsyncDispatch.dispatchMessages(AsyncDispatch.java:194)
at
org.gradle.messaging.dispatch.AsyncDispatch.access$200(AsyncDispatch.java:34)
at
org.gradle.messaging.dispatch.AsyncDispatch$2.run(AsyncDispatch.java:84)
at
org.gradle.messaging.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:63)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalStateException: Cannot dispatch message
org.gradle.messaging.remote.internal.channelmess...@a8d246c4, as this dispatch
has been stopped.
at
org.gradle.messaging.remote.internal.EndOfStreamDispatch.dispatch(EndOfStreamDispatch.java:37)
at
org.gradle.messaging.remote.internal.EndOfStreamDispatch.dispatch(EndOfStreamDispatch.java:24)
at
org.gradle.messaging.remote.internal.DefaultMultiChannelConnection$OutgoingMultiplex.dispatch(DefaultMultiChannelConnection.java:185)
at
org.gradle.messaging.remote.internal.DefaultMultiChannelConnection$OutgoingMultiplex.dispatch(DefaultMultiChannelConnection.java:175)
at
org.gradle.messaging.remote.internal.MethodInvocationMarshallingDispatch.dispatch(MethodInvocationMarshallingDispatch.java:42)
at
org.gradle.messaging.remote.internal.MethodInvocationMarshallingDispatch.dispatch(MethodInvocationMarshallingDispatch.java:25)
at
org.gradle.messaging.dispatch.ThreadSafeDispatch.dispatch(ThreadSafeDispatch.java:28)
at
org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:75)
at $Proxy29.processTestClass(Unknown Source)
at
org.gradle.api.internal.tasks.testing.worker.ForkingTestClassProcessor.processTestClass(ForkingTestClassProcessor.java:70)
at
org.gradle.api.internal.tasks.testing.processors.RestartEveryNTestClassProcessor.processTestClass(RestartEveryNTestClassProcessor.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:32)
at
org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:23)
at
org.gradle.messaging.dispatch.ExceptionTrackingDispatch.dispatch(ExceptionTrackingDispatch.java:32)
... 7 common frames omitted
I can cause the same problem on my Mac if I specify a relative path for
JAVA_HOME. Prior to preview-3 we were also getting the following exception:
Caused by: java.io.IOException: Cannot run program
"modules/java/src/linux/bin/java" (in directory
"/home/someuser/Development/proj/main/exp/pmt/working/webserver"):
java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
at
org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:64)
This seems to be corrected, but something else related to the
ForkingTestClassProcessor seems to be using the JAVA_HOME path incorrectly.