有一个Java类创build一个POST请求并将其发送给一个servlet。 类文件(testing)的主要方法如下所示:
public static void main(String[] args) throws IOException { // Code logic goes here... // No return Statement }
retcode=`$CLK_JAVA_PATH -cp $CLASSPATH test ${PASSWORD} ${HOSTNAME} ${TOOLSET}` if [ $? != "0" ];then echo "ERROR: echo "${retcode}" else echo "${SCRIPT} Success" fi
如果代码失败或成功, retcode
总是具有值“2”。 我的问题是因为我的主要方法的返回types是“无效”为什么代码返回一些值?
Java应用程序的返回值不是其main
方法的返回值,因为Java应用程序在main
方法执行完成后不一定会结束。
相反,当没有更多的非守护线程正在运行或System.exit()
被调用时,JVM结束。
System.exit()
也是指定返回值的唯一方法:传递给System.exit()
的参数将被用作大多数操作系统上的JVM进程的返回值。
所以结束你的main()
方法:
System.exit(0);
将确保两件事情:
main
结束时真正退出 正如在C和C ++中所做的那样,Java程序不会通过从main
返回值来将退出代码返回给操作系统。 您可以通过调用System.exit(code);
来退出程序并指定退出代码System.exit(code);
, 例如:
// Returns exit code 2 to the operating system System.exit(2);
使用
System.exit( someNumber );
这将使您的应用程序控制操作系统所看到的返回值。
System.exit(0);
这将返回错误代码0(一切正常)。 System.exit文件
您的程序退出后总是返回一个返回码。 在正常的程序中,如果你不指定返回码,它将返回零 (这包括将返回类型设置为void
)。
不过,Java却喜欢特别! Java不会返回你在Main方法返回的返回码,但是当JVM退出的时候它会返回一些返回码(这个是多线程程序),并且返回一个System.Exit(returnCode);
调用指定。
你没有得到退出状态,那是$?
包含的内容。 无论写入System.out
,你都可以达到标准。