从另一个Java应用程序启动Java应用程序

jps*_*res 5 java reflection

我正在做一个Java Record/Replay工具,我需要从我的主Java应用程序启动Java应用程序.我需要访问EventDispatchThread以拦截事件并记录它们,所以我通过反射启动应用程序(简化了代码片段):

Class<?> app = Class.forName(mainClass);
Method m = app.getMethod("main", new Class[] { String[].class }); 
m.invoke(null, new Object[] { new String[] {} });
Run Code Online (Sandbox Code Playgroud)

我以前动态地将所有jar加载到类路径,并且应用程序几乎完美地启动.

当应用程序需要访问任何文件并使用相对路径执行时,会发生此问题.因为应用程序是通过我的应用程序启动的,所以路径与从其正常路径启动的路径不同,并且找不到文件.

我该怎么做才能解决这个问题?动态改变执行环境?有任何想法吗?