从Java代码返回值

有一个Java类创build一个POST请求并将其发送给一个servlet。 类文件(testing)的主要方法如下所示:

public static void main(String[] args) throws IOException { // Code logic goes here... // No return Statement } 

这是从KornShell(ksh脚本中调用的,如下所示:

 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); 

将确保两件事情:

  • 你的Java应用程序在到达main结束时真正退出
  • JVM进程的返回值是0

正如在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 ,你都可以达到标准。