Java 从命令行运行正常,但从 shell 脚本给出 "Could not find or load main class"
Java runs OK from command line, but gives "Could not find or load main class" from shell script
当我在 RedHat 6 上从命令行执行以下命令时,它运行良好:
java -cp /my/dir/Dep1.jar:/my/dir/Dep2.jar:/my/dir/MainJar.jar one.of.my.classes.Class1 <args> > log.txt
但是,当我执行以下脚本时 test1.sh
(具有 755 权限):
#!/bin/sh
export JEXE="java"
export JBDIR="/my/dir"
export ARGS="<args>"
export JARS="${JBDIR}/Dep1.jar:${JBDIR}/Dep2.jar:${JBDIR}/MainJar.jar"
export CLASSPATH=""
for f in `ls ${JBDIR}/*.jar`
do
export CLASSPATH=$CLASSPATH:$f
done
cd "${JBDIR}"
"${JEXE}" -cp "${JARS}" one.of.my.classes.Class1 "${ARGS}" > log.txt
as ./test1.sh
来自命令行,我得到 Could not find or load main class
。我做错了什么?
更新:
- 对于原始问题的错误编辑,我们深表歉意。更正。
echo
产生 java -cp /my/dir/Dep1.jar:/my/dir/Dep2.jar:/my/dir/MainJar.jar one.of.my.classes.Class1 <args>
- 我添加了构建
CLASSPATH
试图让脚本工作。删除它没有效果,即我得到了完全相同的错误。
- JAR 是否可能以某种方式构建不正确?我通过 运行 从 Eclipse 构建的 ant 生成它。
脚本在我添加后有效
export PATH=$PATH:<path to java directory>
当我在 RedHat 6 上从命令行执行以下命令时,它运行良好:
java -cp /my/dir/Dep1.jar:/my/dir/Dep2.jar:/my/dir/MainJar.jar one.of.my.classes.Class1 <args> > log.txt
但是,当我执行以下脚本时 test1.sh
(具有 755 权限):
#!/bin/sh
export JEXE="java"
export JBDIR="/my/dir"
export ARGS="<args>"
export JARS="${JBDIR}/Dep1.jar:${JBDIR}/Dep2.jar:${JBDIR}/MainJar.jar"
export CLASSPATH=""
for f in `ls ${JBDIR}/*.jar`
do
export CLASSPATH=$CLASSPATH:$f
done
cd "${JBDIR}"
"${JEXE}" -cp "${JARS}" one.of.my.classes.Class1 "${ARGS}" > log.txt
as ./test1.sh
来自命令行,我得到 Could not find or load main class
。我做错了什么?
更新:
- 对于原始问题的错误编辑,我们深表歉意。更正。
echo
产生java -cp /my/dir/Dep1.jar:/my/dir/Dep2.jar:/my/dir/MainJar.jar one.of.my.classes.Class1 <args>
- 我添加了构建
CLASSPATH
试图让脚本工作。删除它没有效果,即我得到了完全相同的错误。 - JAR 是否可能以某种方式构建不正确?我通过 运行 从 Eclipse 构建的 ant 生成它。
脚本在我添加后有效
export PATH=$PATH:<path to java directory>