我必须执行下面的脚本
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.我知道这是一个没有正确设置类路径变量的问题。我猜我在某个地方的语法是错误的。有谁能帮帮忙吗。谢谢
发布于 2012-07-24 15:11:47
export CPATH=".:/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar" 此外,您也不必将shell变量放在引号中。
发布于 2012-08-01 18:31:31
从分配行中删除export CPATH=。这迫使java查找名为cpath=.而不是.的文件或目录。
#! /bin/bash
jarfile=/mdcode/mtrxmdsb2/WaferChecks/bin/WaferChecksFile.jar
cpath=.:${jarfile?}您不需要export,因为您将$cpath作为参数传递给java -classpath选项。
在passant中,您可以在调用java之前执行一些检查,以消除以下代码行中的一些小错误:
(< ${jarfile?}) || exit # abort on missing or unreadable file[*]如果path变量为空或undefined
( < file ) || exit是对打开要读取的文件的能力的最小测试,则${path:?}将中止。(这是bash、ksh93和zsh的常用用法。)
最后的脚本变成:
#! /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 $3https://stackoverflow.com/questions/11625092
复制相似问题