Shell 如何在下面的脚本中设置CPATH的值。脚本无法识别下面脚本第2行中的类路径。

Shell 如何在下面的脚本中设置CPATH的值。脚本无法识别下面脚本第2行中的类路径。,shell,classpath,ksh,Shell,Classpath,Ksh,我必须执行下面的脚本 export CPATH="cpath=.:/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar" /sail/lpp/IBM/Java/1.6.0/jre/bin/java \ -classpath "$CPATH" com/ibm/md/waferchecks/ReadPasswordMain $1 $2 $3 脚本接受3个参数。但是,当我从cmd提示符运行脚本时,我得到以下错误: Exception in

我必须执行下面的脚本

export CPATH="cpath=.:/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar"
/sail/lpp/IBM/Java/1.6.0/jre/bin/java \
    -classpath "$CPATH" com/ibm/md/waferchecks/ReadPasswordMain $1 $2 $3
脚本接受3个参数。但是,当我从cmd提示符运行脚本时,我得到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com.ibm.md.wafercheck
s.ReadPasswordMain
Caused by: java.lang.ClassNotFoundException: com.ibm.md.waferchecks.ReadPassword
Main
        at java.net.URLClassLoader.findClass(URLClassLoader.java:421)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:652)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:346)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:618)
Could not find the main class: com/ibm/md/waferchecks/ReadPasswordMain.  Program
 will exit.
我知道这是类路径变量设置不正确的问题。我想我在某个地方的语法有问题。谁能帮忙吗。谢谢

export CPATH=".:/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar" 

另外,您不必将shell变量放在引号中。

从赋值行中删除
导出CPATH=
。这迫使java查找名为
cpath=。
的文件或目录,而不是

#! /bin/bash
jarfile=/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar
cpath=.:${jarfile?}
您不需要导出,因为您将$cpath作为参数传递给
java
-classpath
选项


顺便说一句,您可以在调用java之前执行一些检查以消除 以下行中的一些小错误:

(< ${jarfile?}) || exit # abort on missing or unreadable file[*]
#! /bin/bash
jarfile=/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar
cpath=.:${jarfile?}
(< ${jarfile?}) || exit

/sail/lpp/IBM/Java/1.6.0/jre/bin/java \
    -classpath "${cpath?}"  \
    com/ibm/md/waferchecks/ReadPasswordMain $1 $2 $3