我正在尝试在 Eclipse Indigo 中运行一个项目,其中我的主类(包含 main 方法)位于我从另一个项目创建的外部 .jar 文件中。该程序的运行基于将当前项目中的类名称作为命令行参数传递给 main 方法。
当我尝试运行这个项目时,main 方法的前几行(在 .jar 中)被执行,但随后程序退出。调试器通知我它以错误代码 1 退出。没有抛出异常(或者至少没有出现在控制台或我的 try-catch 块中)并且我没有对调用System.exit
.
直接运行时,main方法正常完成。仅当项目导出到 .jar 时才会发生这种意外退出。
我觉得这特别令人困惑,特别是考虑到调试已经确认 main 方法被调用,并且在接近尾声时简单地退出而没有完成。这是我的主要方法:
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, SecurityException
{
Class<?> c = Class.forName(args[0]);
OpenGL.Renderer r = null;
Class<? extends OpenGL.Renderer> c2 = c.asSubclass(OpenGL.Renderer.class);
r = c2.newInstance();
OpenGL.init(r);
}
r = c2.newInstance()
调试器在终止前到达第 16 行 ( ) 处的断点。
编辑:问题似乎在于初始化变量的反射代码r
。无论我将断点放在哪里,我都无法进入 r 不为空的情况。
编辑#2:在使用调试器更多之后,我可以进入调用中c2.newInstance()
调用的构造函数,但程序在方法进入后立即退出,在任何构造函数执行之前。除了用于调试的 syso 调用之外,构造函数不包含任何内容。
任何帮助使该程序正确运行将不胜感激。