Yes, it shouldn't work...
When you are writing in processing, you write a code and finally, you get a *.pde file (or a set of *.pde files). This code is almost a JAVA file, but some operations need to be done on it to translate it to a proper JAVA code. This is done behind through a pre compiler. I'm looking for the right place where this happen, but I can't find exactly. (http://dev.processing.org/source/index.cgi/trunk/processing/app/src/processing/app/)
Let me try to explain basically what the precompiler is doing:
(* correct me if I'm wrong)
- Merge all *.pde files in one (sequential)
- Add f to floats types
- Colors types are replaced by ints (*I'm not sure of that one).
- Create a giant class where everything you had is now inner class.
- Move the imports statements outside of the general class.
- Handle public|private statements (for setup(), main(), keyPressed()...)
- Add a main method, which is your entry point in your sketch
You then have a JAVA code. This is also why it seems to be problematic for the parametrized types such ArrayList<Type>, where the precompiler doesn't know what to do.
Then, if try to override public main(String[] args){...}, you get a conflict, because the precompiler is also adding a main(String[] args). I don't know about your specific problem, but can you just use setup instead, or you really need to do something before?
By the way, what you cant do, is to create a new tab named something.java. The .java extension is important. This file will be treated just as a normal JAVA file (no modification will be made to this one). This tab will be saved and compiled just as in Eclipse, but you need to write JAVA code (as you are used to in Eclipse).
I hope it may help.