我正在尝试使用System.exit()将错误代码返回给OS(Unix) 但每次它在Unix中都被错误地表示出来。
当我们执行“$?”时,将System.exit(1)
表示为256在unix中。
System.exit(2)
代表我们做“$?”在unix中。
当我们做“$?”时,System.exit(3)
被表示为768在unix。
任何人都可以指导原因。
答案 0 :(得分:1)
以下是一个小例子,您可以在系统上运行测试,以验证您是否仍然获得相同的结果。
<强> Foo.java 强>
package sub;
public class Foo {
public static void main(String[] args) {
System.out.printf("System.exit(%s)%n", args[0]);
System.exit(Integer.valueOf(args[0]));
}
}
的 MANIFEST.MF 强>
Manifest-Version: 1.0
Main-Class: sub.Foo
的 foo.sh 强>
#!/bin/bash
javac -d . Foo.java
jar cmf MANIFEST.MF foo.jar sub/Foo.class
for val in 1 2 3
do
java -cp foo.jar sub.Foo $val
echo "rc: sub.Foo $?"
java -jar foo.jar $val
echo "rc: main class in manifest $?"
echo
done
结果
System.exit(1)
rc: sub.Foo 1
System.exit(1)
rc: main class in manifest 1
System.exit(2)
rc: sub.Foo 2
System.exit(2)
rc: main class in manifest 2
System.exit(3)
rc: sub.Foo 3
System.exit(3)
rc: main class in manifest 3