-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 123, Failures: 1, Errors: 0, Skipped: 8, Time elapsed: 664.027 sec <<< FAILURE!
testCreateTwoNodesWithRunScript(org.jclouds.elastichosts.compute.ElasticHostsPeer1SanAntonioComputeServiceLiveTest)  Time elapsed: 149.032 sec  <<< FAILURE!
java.lang.AssertionError: [output=bash: java: command not found
, error=, exitCode=127]
[output= * Reloading OpenBSD Secure Shell server's configuration sshd
   ...done.
Selecting previously deselected package libcurl3.
(Reading database ... 20043 files and directories currently installed.)
Unpacking libcurl3 (from .../libcurl3_7.21.0-1ubuntu1.1_amd64.deb) ...
Selecting previously deselected package curl.
Unpacking curl (from .../curl_7.21.0-1ubuntu1.1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libcurl3 (7.21.0-1ubuntu1.1) ...
Setting up curl (7.21.0-1ubuntu1.1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
/tmp/bootstrap/bootstrap.sh: line 31: /etc/init.d/sshd: No such file or directory
dpkg-preconfigure: unable to re-open stdin: 
E: Unable to locate package openjdk-7-jdk
, error=, exitCode=0]
	at org.jclouds.compute.BaseComputeServiceLiveTest.doCheckJavaIsInstalledViaSsh(BaseComputeServiceLiveTest.java:831)
	at org.jclouds.compute.BaseComputeServiceLiveTest.sshPing(BaseComputeServiceLiveTest.java:812)
	at org.jclouds.compute.BaseComputeServiceLiveTest.checkNodes(BaseComputeServiceLiveTest.java:462)
	at org.jclouds.compute.BaseComputeServiceLiveTest.testCreateTwoNodesWithRunScript(BaseComputeServiceLiveTest.java:360)
	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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:76)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:673)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:846)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1170)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
	at org.testng.TestRunner.runWorkers(TestRunner.java:1147)
	at org.testng.TestRunner.privateRun(TestRunner.java:749)
	at org.testng.TestRunner.run(TestRunner.java:600)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:317)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:34)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:351)
	at org.testng.internal.thread.ThreadUtil$CountDownLatchedRunnable.run(ThreadUtil.java:147)
	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:680)

