将值从java程序返回到批处理文件

将值从java程序返回到批处理文件,java,Java,在C的好日子里,您有intmain(…)作为输入函数,您可以从批处理文件调用可执行文件,并检查批处理文件中包含返回值的%errorlevel% 在java中,我将java应用程序编译为something.jar,并将类似publicstaticvoidmain(String[]rawArgs)的函数标记为入口点。然后我从批处理文件中调用java-jarsomething.jar。如果愿意,我甚至可以附加命令行参数 但是现在我无法检查%errorlevel%,因为我的主函数返回一个void 我认为

在C的好日子里,您有
intmain(…)
作为输入函数,您可以从批处理文件调用可执行文件,并检查批处理文件中包含返回值的
%errorlevel%

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

但是现在我无法检查
%errorlevel%
,因为我的主函数返回一个void

我认为这是完全合乎逻辑的,因为所有的东西都在虚拟机中运行,而这是实际的可执行文件,而不是
something.jar

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


我的问题是:有没有更好的方法?杀掉虚拟机似乎很难。如果代码运行在服务器端怎么办?我是否缺少一个可爱的函数,比如Runtime.SetErrorLevel,它可以实现我想要的功能?

用java声明一个本机函数,
静态本机void SetErrorLevel(int-level)
,使用
javah.exe
生成JNI头,并在C中实现函数,该函数在进程中设置
%errorlevel%
环境变量


然后正常终止。

在java中声明一个本机函数,
静态本机void SetErrorLevel(int级别)
,使用
javah.exe
生成JNI头,并在C中实现函数,该函数在进程中设置
%errorlevel%
环境变量

然后正常终止。

main
函数结束之前调用

main
函数结束之前调用

System.exit()
是执行所需操作的正确方法-进程只能在退出时返回错误条件,那么在其他地方指定该代码有什么意义呢

只需使用带有非零参数的System.exit()来指示错误级别,无需寻找其他方法。如果你试图解决这个问题,你只会遇到可怕的本机黑客,它们不可移植,但却能完成与
系统相同的任务。exit()

系统。exit()
是做你想做的事情的正确方法-进程无论如何都只能在退出时返回错误条件,那么,在其他地方指定该代码有什么意义呢


只需使用带有非零参数的System.exit()来指示错误级别,无需寻找其他方法。如果你试图解决这个问题,你只会遇到可怕的本机黑客,这些黑客不可移植,但却能完成与System.exit()相同的任务。

我不明白你为什么不想使用System.exit()。如果要从进程返回值,该进程是一个java虚拟机。System.exit()将结束进程(您作为“java-jar…”执行的虚拟机),并将%errorlevel%返回操作系统(以可移植的方式)。我不明白您为什么不想使用System.exit()。如果要从进程返回值,该进程是一个java虚拟机。System.exit()将结束该进程(您作为“java-jar…”执行的虚拟机),并将%errorlevel%返回操作系统(以可移植的方式),这是一种非常复杂的方法,可以做
System.exit()所做的事情。这是一种非常复杂的方法,可以做
System.exit()
所做的事情。