Java的退出代码不会出现在Bash中

时间:2016-02-15 09:10:55

标签: java bash

我有一个bash文件:

REPOS="$1"
TXN="$2"

SVNLOOK=/usr/bin/svnlook
LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]")

echo "\n$LOGMSG" >> /dev/tty

javac ~/Desktop/SomeClass.java
java ~/Desktop/SomeClass $LOGMSG

STATUS=$? 
echo "\n" >> /dev/tty
echo $STATUS >> /dev/tty

exit 0

调用此java文件:

public class SomeClass {

    public static void main(String[] args) {
        String result = "";
        for (String s: args) {
            result = result + " " + s;

        }

       String regex = ".*\\bHello\\b.*";

       if(result.matches(regex)) {
           System.out.println("It matches");
           System.exit(0);
       } else {
           System.out.println("It does not match");
           System.exit(42);
       }
    }
}

我从未在Java文件中退出1的退出代码。但是,当我回显bash文件中的状态时,它总是显示'1'这背后的原因是什么?

1 个答案:

答案 0 :(得分:1)

错误代码是因为Java无法启动。您没有指定要正确运行的类。

如果我的桌面目录中有一个类,我需要使用以下命令从另一个目录运行它:

java -cp ~/Desktop SomeClass

假设SomeClass没有指定包。如果文件顶部有package org.foo.bar;,则需要使用

java -cp ~/Desktop org.foo.bar.SomeClass