Currently to extract a call stack you need to launch the program you want to analyze, then launch JavaCallStackExtractor, it is fine for a first approach, but having to launch only one would be better.
*Proposal 1: Instantiate a VM programatically
It might be possible to instantiate our own VM with enough information about the used libraries and the location of the main method.
Proposal 2: Make this project a java agent
It might be possible to transform this program in a java agent, this way it will be necessary to launch the program to analyze using a java agent argument like this on the VM : -javaagent:/path/to/CSExtractor.jar=configFileName