The first time a request is made to a JSP (or if the JSP file has changed since the last request) the
servlet container will:
Parse the JSP and generate a servlet source file. Compile the source file into a java class file Instanciate the class and load it into memory Serve up the results from the loaded class file. Subsequent hits go straight to the last step.
If you change the JSP file, the process starts over again.
In Tomcat the source and class files get written to directories under the tomcat/work directory.
If, for whatever reason, tomcat can't write to or read from that directory, you're going to see the above exception.
One way or another, you will need to insure that the user under which Tomcat is running can read and write to that directory structure.
It will also need to be able to write to the tomcat/logs directory.