I am running a simple multithreaded producer/consumer framework in Java to do some processing. The framework reads from some files, process the data, and writes some results back to disk.
My problem is the following: Because of (very) high memory footprint on the processing, all processing must be done in batches in the following manner:
1 - Start the framework
2 - Do the processing
3 - Shutdown the framework
which are all in a shell script. To do this I open a screen so the processing can continue even when I am not around, and start the shell script. However, what I experience is that if I disconnect the screen (CTRL-A + D) the framework will complain that it, all of a sudden, cannot find the java byte-compiled classes of the framework. This problem goes away completely if I don't disconnect the screen.
This is really frustrating, and I don't understand why. I have re-installed screen several times (Debian-based system) and I have access to other servers where this problem don't exist when I move the code/data to them and process there. Unfortunately these servers are (technically) off limit so I can do the full processing there.
Any advice on how to proceed?
** UPDATE **
Here is some output after I disconnect the screen:
/edu/process/TOB.java:3: warning: PNGImageReaderSpi is internal
proprietary API and may be removed in a future release
import com.sun.imageio.plugins.png.PNGImageReaderSpi;
^
/edu/process/LPR.java:125: warning: [unchecked] unchecked conversion
Dist<Double> d = new Dist("");
^
required: Dist<Double>
found: Dist
2 warnings
Error: Could not find or load main class edu.process.DService
The warning etc are ok and I have checked thoroughly that they do not interfere with the processing. It is the error. This is the main class that runs everything and after I disconnect the screen it just says it no longer exist.