This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
My wild-assed guess is that at one time you had a method in class eMainUserLogin that looked something like this:
and that when you changed your JSP to look like it does now it was not recompiled so the JSP's generated class file is still looking for the two-string method. Take a look under TOMCAT_HOME/work/Catalina/localhost and you should see a directory for your web application. Delete all the files in it. This will force a recompile of your JSP.
I really Really REALLY doubt that you have found a bug. I don't suppose you are running Tomcat with an earlier version of Java than 1.5 (i.e. 1.3, since you seem to have that handy)? That would cause problems if you compile your class with JDK 1.5.
Joined: Apr 04, 2005
Actually, I had installed Tomcat on a clean XP box with the latest version of the JDK per all of the instructions. All that is on this box is Tomcat, the JDK and PostgresDB and appropriate CLASSPATH definitions. I was having these issues there, so I decided to work for a while on my personal machine to avoid toggling between screens/machines all of the time (and to see if it was environment-specific - though I would be clueless as to how to address that issue...)
On my machine I also had 're-defined' my CLASSPATH to point JDK1.5 and defined it for JBuilder as well and pretty much just left JDK1.3 in my java folder... All I did was re-point my JBuilder back to 1.3, recompile the same class (which was compiling fine anyway) and move this class into the corresponding Tomcat folder.
You are probably correct in stating that there is no bug. It's most likely a matter of Tomcat not being in sync with the JDK version and I have entered a ticket there (after attempting to see if this has/had already been addressed and I didn't follow instructions)...
However it also seems to me that by Tomcat 5.5.8, this should be a non-issue... This has truly been a major frustration and I'm not thrilled with my workaround so I hope there will be a more definite explanation and resolution forthcoming soon.
I'm just glad to be able to begin coding my application!
Thanks for your interest; and I'll update this when i have an answer (even if Tomcat points out my own ignorance is the root).
On my machine I also had 're-defined' my CLASSPATH to point JDK1.5
Just a housekeeping point, you should not point your classpath to any JDK or JRE JAR files or directories. They are picked up from the JRE LIB directory. This can cause problems should you have more than one JDK/JRE installed. Tomcat determines the JDK version to use from the JAVA_HOME environment setting. You may want to check that. My money is on the JSP recompile. It's easy enough to duplicate. Compile the following code (you can use one source file, test.java):
then comment out class test and switch the commented-out method in testB. Recompile. Now test calls a method that doesn't exist in testB:
Your code coughed up a VerifyError rather than NoSuchMethodError because Tomcat "verifies" the JSP and its dependencies (it does this by compiling the JSP into a servlet). You probably restarted Tomcat between your last test and when you switched the JRE in JBuilder and that triggered a JSP recompile. Is my original assumption that you changed insertDBtest correct?