【问题标题】:errors while running the shell script运行 shell 脚本时出错
【发布时间】:2009-03-05 04:27:17
【问题描述】:
WARNING: error instantiating 'java.util.logging.FileHandler,' referenced by handlers, class not found
java.lang.ClassNotFoundException: java.util.logging.FileHandler,
   at java.lang.Class.forName(libgcj.so.7rh)
   at java.util.logging.LogManager.locateClass(libgcj.so.7rh)
   at java.util.logging.LogManager.createInstance(libgcj.so.7rh)
   at java.util.logging.LogManager.readConfiguration(libgcj.so.7rh)
   at vists.VisTS.main(VisTS.java:64)
Exception in thread "main" java.lang.NullPointerException
   at java.util.logging.Logger.addHandler(libgcj.so.7rh)
   at java.util.logging.LogManager.readConfiguration(libgcj.so.7rh)
   at vists.VisTS.main(VisTS.java:64)
./SampleStartVisTsData.sh: line 5: cd..: command not found

我无法找出运行批处理文件时遇到的错误

以下是shellscript:

cd ../../classes
export CLASSPATH=$CLASSPATH:../vismine.jar:../mysql-connector-java-5.1.6-bin.jar
java -Xm500m vists.VisTS ../ConfigFiles/dataCenterMySQL-log.xml
cd..

需要帮助。

【问题讨论】:

    标签: shell


    【解决方案1】:

    当你应该有 cd .. 时,你在第 5 行有 cd..(注意空格)

    【讨论】:

    • 这肯定是问题之一。
    【解决方案2】:

    其中一个错误是“cd..”命令,如果它不是多余的,则在“cd ..”中需要一个空格。您的脚本更改目录以在正确的位置运行 Java,但在退出之前无需再次更改目录 - 这是 Linux 而不是 DOS(这是必要的;并且您的退出 cd 不会将您返回到您开始的位置) .

    切换到 classes 目录然后期望在上面的目录中找到 jar 文件似乎很奇怪 - 你确定这是对的吗?

    确保第一个 cd 也有效可能是明智的:

    error(){
        echo "$@" 1>&2
        exit 1
    }
    cd ../../classes || exit 1
    [ -r ../vismine.jar ] || error "did not find vismine.jar"
    [ -r ../mysql-connector-java-5.1.6-bin.jar ] ||
        error "did not find mysql-connector-java-5.1.6-bin.jar"
    export CLASSPATH=$CLASSPATH:../vismine.jar:../mysql-connector-java-5.1.6-bin.jar
    java -Xm500m vists.VisTS ../ConfigFiles/dataCenterMySQL-log.xml
    

    原则上,您可以通过编写单独为 Java 命令导出 CLASSPATH:

    CLASSPATH=$CLASSPATH:../vismine.jar:../mysql-connector-java-5.1.6-bin.jar \
    java -Xm500m vists.VisTS ../ConfigFiles/dataCenterMySQL-log.xml
    

    但是,这一次不值得,因为它无论如何都会分散在两行代码中。

    【讨论】: