java - 从 Java 代码返回值

标签 java shell unix scripting ksh

有一个 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”,为什么代码会返回一些值?

最佳答案

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

当没有更多的非守护线程在运行或System.exit() 时,JVM 会结束。被调用。

System.exit()也是唯一指定返回值的方式:传递给System.exit()的参数会作为返回值大多数操作系统上的 JVM 进程。

所以用这个结束你的 main() 方法:

System.exit(0);

将确保两件事:

  • main 结束时,您的 Java 应用程序真正退出,并且
  • JVM进程的返回值为0

关于java - 从 Java 代码返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775802/

相关文章:

java - 如何与 FragmentStatePagerAdapter 内的 Fragment 进行通信?

bash - 无法在 docker build 期间使用进程替换,因为 bash 进入 posix 模式

c++ - 有没有办法在后台发送一些已知 pid 的进程?

linux - Grep:列出 'per-file' 结果

Unix 排序实用程序 : use hexadecimal byte value as delimiter

java - Spring & Java Generics - 在抽象 Controller 中获取一项服务的实例

java - 区分表格元素

一台机器上的 javax.net.ssl.SSLHandshakeException,但另一台机器上没有

linux - 如果写出从1到4321的数字,数字 '5'会出现多少次?

shell - 无法创建以日期命名的远程目录