有一个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”,如果代码失败或成功则独立。
我的问题是,因为我的main方法的返回类型是“void”,为什么代码返回一些值?
答案 0 :(得分:40)
Java应用程序的返回值是而不是它的main
方法的返回值,因为Java应用程序在main
方法完成时不一定结束执行。
相反,当没有更多非守护程序线程正在运行或调用System.exit()
时,JVM结束。
System.exit()
也是指定返回值的唯一方法:传递给System.exit()
的参数将用作大多数操作系统上JVM进程的返回值。
结束你的main()
方法:
System.exit(0);
将确保两件事:
main
的末尾并且答案 1 :(得分:17)
Java程序不会通过返回main
中的值将退出代码返回给操作系统,就像在C和C ++中一样。您可以通过调用System.exit(code);
退出程序并指定退出代码,例如:
// Returns exit code 2 to the operating system
System.exit(2);
答案 2 :(得分:5)
System.exit(0);
这会返回错误代码0(一切都很顺利)。 System.exit Doc
答案 3 :(得分:4)
使用
System.exit( someNumber );
这将使您的应用程序控制操作系统看到的返回值。
答案 4 :(得分:3)
您的程序始终会在退出后返回返回代码。在普通程序中,如果您没有指定返回代码,它将返回零(这包括将返回类型设置为void
)。
System.Exit(returnCode);
调用指定的内容。
答案 5 :(得分:1)
您没有获得退出状态,这是$?
包含的内容。无论写入System.out
是什么,你都会标准化。