2

在过去的 C 语言中,您拥有int main(...)作为入口函数,您可以从批处理文件中调用可执行文件并签%errorlevel%入包含返回值的批处理文件。

在java中,我编译我的java应用程序something.jar并将一个函数标记public static void main(String[] rawArgs)为入口点。java -jar something.jar然后我从批处理文件中调用。如果我愿意,我什至可以附加命令行参数。

但现在我无法检查%errorlevel%,因为我的主要功能返回一个 void。

我想这一切都是完全合乎逻辑的,因为一切都在虚拟机中运行并且那是实际的可执行文件而不是something.jar.

我可以使用 System.exit(...) 来实现我最初的目标。

我的问题是:有没有更好的方法来做到这一点?杀死虚拟机似乎很重。如果代码运行在服务器端怎么办?我是否缺少像 Runtime.SetErrorLevel 这样的可爱功能来满足我的需求?

4

3 回答 3

3

System.exit()是做你想做的事情的正确方法 - 一个进程只能在它退出时返回一个错误条件,那么在其他任何地方指定该代码有什么意义呢?

只需使用带有非零参数的 System.exit() 来指示错误级别 - 无需寻找替代方法。如果你试图解决它,你最终会得到可怕的原生黑客,它们不可移植,但完成与System.exit().

于 2013-05-30T14:41:22.203 回答
1

在函数System.exit()结束之前调用。main

于 2013-05-30T12:56:06.290 回答
0

在 java 中声明一个本地函数static native void SetErrorLevel(int level);,生成 JNI 头文件,javah.exe并使用 C 语言实现该函数,该函数%errorlevel%在您的进程中设置环境变量。

然后正常终止。

于 2013-05-30T10:51:44.687 回答