I'm trying to run a TeamCity (default) build agent with 32-bit java on ubuntu 64-bit, I have created a [TeamCity]/bin/setenv.sh what contains:
JAVA_HOME=/usr/lib/jvm/ia32-java-6-sun That works fine running the server with 32-bit jre, but not for the agent: I've tried these lines in [buildAgent]/conf/buildAgent.properties
JAVA_HOME=/usr/lib/jvm/ia32-java-6-sun JRE_HOME=/usr/lib/jvm/ia32-java-6-sun/jre and also a '[buildAgent]/jre' link
[buildAgent]/jre -> /usr/lib/jvm/ia32-java-6-sun/jre/ when I do a '[TeamCity]/bin/runAll.sh start' I get this:
Using CATALINA_BASE: /srv/TeamCity Using CATALINA_HOME: /srv/TeamCity Using CATALINA_TMPDIR: /srv/TeamCity/temp Using JRE_HOME: /usr/lib/jvm/ia32-java-6-sun Using CLASSPATH: /srv/TeamCity/bin/bootstrap.jar:/srv/TeamCity/bin/tomcat-juli.jar Starting TeamCity build agent... Java executable is found in '/usr/bin/..'. Starting TeamCity Build Agent Launcher... Agent home directory is /srv/TeamCity/buildAgent Current Java runtime version is 1.6 Lock file: /srv/TeamCity/buildAgent/logs/buildAgent.properties.lock Using no lock Done [16436], see log at ../logs/teamcity-agent.log As you can see from the output, the server is using 32-bit jdk, but the build agent is running the java found in '/usr/bin' (which is 64-bit in my case).
Closer inspection of the '[buildAgent]/bin/findJava.sh', it looks like the script runs a 'which java' and finds the default system java before it even tries any of the supplied args/folders. I think it should find '[buildAgent]/jre' before the system java.
Whats the correct way to specify the java version to use for a build agent, which may be a different version than the server?
Should I just modify findJava.sh to check its arguments before checking the system path for java?