Подтвердить что ты не робот

Возвращаемое значение из кода Java

Существует класс Java, который создает запрос POST и отправляет его сервлету. Основной метод файла (test) класса выглядит примерно так:

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

Это вызвано из KornShell (ksh) script примерно так:

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", почему код возвращает некоторое значение?

4b9b3361

Ответ 1

Возвращаемое значение приложения Java не возвращает значение метода main, потому что приложение Java не обязательно заканчивается, когда метод main завершен. p >

Вместо этого JVM заканчивается, когда не запущено нить не-daemon или когда вызывается System.exit().

И System.exit() также является единственным способом указать возвращаемое значение: аргумент, переданный в System.exit(), будет использоваться как возвращаемое значение процесса JVM для большинства ОС.

Итак, закончите свой метод main() следующим образом:

System.exit(0);

обеспечит две вещи:

  • что ваше приложение Java действительно выходит, когда достигнут конец main и
  • что возвращаемое значение процесса JVM равно 0

Ответ 2

Программы Java не возвращают код выхода обратно в операционную систему, возвращая значение из main, как это делается на C и С++. Вы можете выйти из программы и указать код выхода, вызвав System.exit(code);, например:

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

Ответ 3

System.exit(0);

Это возвращает код ошибки 0 (все пошло нормально). System.exit Doc

Ответ 4

Использование

System.exit( someNumber );

это даст вашему приложению контроль над возвращаемым значением, наблюдаемым ОС.

Ответ 5

Ваша программа всегда возвращает код возврата после выхода. В обычных программах, если вы не укажете код возврата, он вернет ноль (сюда входит установка типа возврата на void).

Java, однако, любит быть особенным! Java не вернет возвращаемый код, возвращаемый в методе Main, но вернет код возврата, когда JVM выйдет (это учитывает многопоточные программы) и вернет то, что указывает вызов System.Exit(returnCode);.

Ответ 6

Вы не получаете статус выхода, что содержит $?. Вы получаете стандартную версию, независимо от того, что написано на System.out.