I’m trying to run GWT Devmode with Ant on CentOS using Xvfb and I’m getting what appears to be a Java version error. The beginning of the stacktrace is
[java] JVM args ignored when same JVM is used
[java] Working directory ignored when same JVM is used.
[java] java.lang.NoClassDefFoundError: java.util.concurrent.Semaphore
[java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.taskdefs.Java.run(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.taskdefs.Java.executeJava(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.taskdefs.Java.execute(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.UnknownElement.execute(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.Task.perform(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.Target.execute(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.Target.performTasks(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.Project.executeSortedTargets(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.Project.executeTarget(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.Project.executeTargets(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.Main.runBuild(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.Main.startAnt(ant-1.6.5.jar.so)
[java] at org.apache.tools.ant.launch.Launcher.run(ant-launcher-1.6.5.jar.so)
[java] at org.apache.tools.ant.launch.Launcher.main(ant-launcher-1.6.5.jar.so)
[java] Caused by: java.lang.NoClassDefFoundError: java.util.concurrent.Semaphore
[java] at com.google.gwt.dev.DevModeBase.<init>(DevModeBase.java:749)
[java] at com.google.gwt.dev.DevMode.<init>(DevMode.java:341)
[java] at com.google.gwt.dev.DevMode.main(DevMode.java:309)
[java] at java.lang.reflect.Method.invoke(libgcj.so.7rh)
I installed Sun’s java 1.7.0 and I think it’s set properly. It shows up when I do “java -version” and when I do “alternatives –config java” (version 1.4.2 is set as the default but I’ve changed the current version).
This is the ant task I’m running. Note that I’ve tried all combinations of fork=”true|false” and spawn=”true|false”
<target name="devmode" depends="" description="Run development mode">
<java fork="true" classname="com.google.gwt.dev.DevMode"
dir="${basedir}/war" spawn="true">
<classpath>
<pathelement location="src" />
<path refid="project.class.path" />
<path refid="tools.class.path" />
</classpath>
<jvmarg value="-Xmx512M" />
<jvmarg value="-javaagent:${appengine.folder}/lib/agent/appengine-agent.jar" />
<jvmarg value="-Duser.dir=${basedir}/war" />
<arg line="-war" />
<arg value="${basedir}/war" />
<arg line="-logLevel" />
<arg value="INFO" />
<arg value="-server" />
<arg value="com.google.appengine.tools.development.gwt.AppEngineLauncher" />
<arg value="net.bookedin.bam.BAM" />
</java>
</target>
My $CLASSPATH variable (assuming that matters) shows: /usr/java/jdk1.7.0_02/lib
Discovered the problem. While I had updated java to 1.7.0, javac was still pointing to the old 1.4.2 version. I used alternatives to install the new version and switch to it: