Java programs are so convoluted I can't figure out how it is supposed to work. Perhaps you can describe it?
One common problem is that the PC program doesn't wait long enough to allow the Arduino to reset after the serial port connection is opened, but that may not be an issue here as the Java program seems only to listen.
Do you know for sure that the Java program can read any stuff from the serial port. Most programs I have seen use the RxTx library, or more recently JSSC. RxTx seems to be fading into oblivion. Try JSSC. I have used it successfully with JRuby.
Edit to add ...
I don't see where the Java program calls the function that actually reads the serial port.
Do you have to use Java? How about using JRuby if you want to use the JVM. Or Python. I have written a demo program using Python to communicate with the Arduino, and also a JRuby version. Both are in this Thread http://forum.arduino.cc/index.php?topic=225329.0
. Its more comprehensive than what you are doing.