Ok here's a weird one. I've been working on a web project where I compile and archive into a WAR file via JBuilder's tools for such things.
I have a class called DataValidator which contains a slew of static methods, including one method called isEmpty which is overridden a bunch of times -- don't we all have methods named as such? ;-) Anyway, back on point, I recently added an override that takes a java.util.Map as the param. The code compiles and when testing via Tomcat from within JBuilderX it works just fine.
When I deploy the WAR file to JBoss running the same code I get this error:
java.lang.NoSuchMethodError: DataValidator.isEmpty(Ljava/util/Map;)Z
Not that it matters, but I trimmed my package names off of that error to keep this clean.
Anyway, I have done this exact compilation and deployment process a thousand times on this project, and nothing has changed (that I'm aware of). However, now, for some reason, that one class is not updating!
Some notes:
1. The other classes are updating, including servlets etc.
2. Upon a friend's awesome suggestion I added a static initializer to the DataValidator class which prints the revision # to the System.out. Within JBuilder it prints no prob, within JBoss nothing!
3. That same friend had another great idea, to add a catch-all override of the method as isEmpty(java.lang.Object) which simply prints the received class type. I did so, but it is not called.
4. If I move the override of the static method isEmpty(java.util.Map) to the other class which is calling the method and invoke it locally, it works from within JBoss!!
5. I have reinstalled JBoss and ensured that both JBuilder and JBoss are pointed at the same JDK installation (1.4.2).
6. I am using JBuilder's "Borland Make" for compilation.
What the heck is going on here?
Thanks all!
- Lon
Turns out that the DataValidator class was not filtered properly when compiling some other jar file which was previously put into the class path for the app server.
Anyway, problem resolved.
- Lon