Axis Web services Problem: No compiler found in your classpath! (you may need to add 'tools.jar')

java.lang.RuntimeException: No compiler found in your classpath! (you may need to add 'tools.jar')

While trying to deploy a web service in Tomcat (1.5) with Axis 1.4, you may have encountered the above error message. If you have faced with that, following information will help you in fixing it.

If you are at servier side, this error may be logged in Tomcat log file as follows.
- No compiler found in your classpath! (you may need to add 'tools.jar')
java.lang.ClassNotFoundException: sun.tools.javac.Main
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1355)
....


On client side, you'll receive this error as follows.
Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.RuntimeException: No compiler found in your classpath! (you may need to add 'tools.jar')
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:myhost


So the obvious solution you would try is adding %JAVA_HOME%\lib\tools.jar into your CLASSPATH variable even if you were at server side or the client side. But this will not solve the issue.

Solution:
Copy %JAVA_HOME%\lib\tools.jar file into %CATALINA_HOME%\common\lib folder and restart tomcat.

Why %JAVA_HOME%\lib\tools.jar is not identified?
If you check happyaxis.jsp page (http://127.0.0.1:8080/axis/happyaxis.jsp); under "Examining System Properties" you'll see that property java.home is set to the JRE path, not the JDK path in your machine. (even though %JAVA_HOME% points to JDK installation). In my machine it looked as follows.

java.vm.version=1.6.0_03-b05
java.home=C:\Java\jre1.6.0_03

I'm not sure why the JAVA_HOME is not identified correctly, but this solved the issue for me.

Check out this stream