从 Java 代码返回值

2022-09-01 21:33:56

有一个 Java 类,它创建一个 POST 请求并将其发送到 servlet。类文件(test)的主要方法如下所示:

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”,与代码是失败还是成功无关。我的问题是,既然我的主方法的返回类型是“void”,为什么代码返回一些值?


答案 1

Java 应用程序的返回值不是其方法的返回值,因为 Java 应用程序不一定在方法完成执行时结束。mainmain

相反,当不再运行非守护程序线程或调用 System.exit() 时,JVM 将结束。

并且也是指定返回值的唯一方法:传递给的参数将在大多数操作系统上用作 JVM 进程的返回值。System.exit()System.exit()

因此,用这个来结束你的方法:main()

System.exit(0);

将确保两件事:

  • 您的 Java 应用程序在到达 末尾时确实退出,并且main
  • JVM 进程的返回值为 0

答案 2

Java 程序不会像在 C 和 C++ 中那样,通过从 返回值将退出代码返回到操作系统。您可以通过调用 退出程序并指定退出代码,例如:mainSystem.exit(code);

// Returns exit code 2 to the operating system
System.exit(2);

推荐