【发布时间】:2018-01-15 06:02:08
【问题描述】:
我有一个批处理文件要转换成 shell 文件 批处理代码是:
SETLOCAL
SET BASEDIR=C:\hhpps\HomeHealthGrouper
SET HH_CLASSPATH=.;%BASEDIR%\dist\HomeHealthJava.jar;.;%BASEDIR%\dist\HH_PPS_V_API.jar
rem SET JAVA_VERSION=-version:1.7
SET TEST_FILE=%BASEDIR%\TestData\TestDataV7118.txt
rem SET OPTIONS=details=1
java %JAVA_VERSION% -Xms512m -Xmx512m -Djava.util.logging.config.file="%BASEDIR%\config\logging.properties" ^
-classpath "%HH_CLASSPATH%" com.mmm.cms.homehealth.test.HomeHealthGrouper_HP ^
"input=%TEST_FILE%" "config=%BASEDIR%\config\HomeHealthGrouper.properties" ^
%OPTIONS%
rem reset all variables to prevent locking
SET BASEDIR=
SET HH_CLASSPATH=
SET TEST_FILE=
SET OPTIONS=
ENDLOCAL
对于上面的代码我写了这个shell代码:
#!/bin/bash
export BASEDIR=/home/bitsbridge/Videos/HomeHealthGrouper
#export JAVA_HOME=/media /bitsbridge/WIN XP/Program Files/Java/jdk1.6.0/bin/java
#export PATH=$PATH:/usr/java/jdk1.6.0/bin
#export JAVA_HOME
export HH_CLASSPATH=.:$BASEDIR/dist/HomeHealthJava.jar:$BASEDIR/dist/HH_PPS_V_API.jar
#export CLASSPATH=${CLASSPATH}
classpath=""
input=""
config=""
export JAVA_VERSION=`java -version` #/usr/lib/jvm/java-7-oracle/
#temp="java -version"
#JAVA_VERSION=`java -version 2>&1 |awk 'NR==1{ gsub(/"/,""); print $3 }'`
export TEST_FILE=$BASEDIR/TestData/TestDataV6117.txt
export OPTIONS=1
java $JAVA_VERSION -Xms512m -Xmx512m -Djava.util.logging.config.file="/home/bitsbridge/Videos/HomeHealthGrouper/config/logging.properties"\
classpath="/home/bitsbridge/Videos/HomeHealthGrouper/dist/HomeHealthJava.jar:/home/bitsbridge/Videos/HomeHealthGrouper/dist/HH_PPS_V_API.jar" com.mmm.cms.homehealth.test.HomeHealthGrouper_HP\
input="/home/bitsbridge/Videos/HomeHealthGrouper/TestData/TestDataV6117.txt" config="/home/bitsbridge/Videos/HomeHealthGrouper/config/HomeHealthGrouper.properties"\
$OPTIONS
export BASEDIR=""
export HH_CLASSPATH=""
export TEST_FILE=""
export OPTIONS=""
#${CLASSPATH}:.
#com.mmm.cms.homehealth.test.HomeHealthGrouper_HP
执行上述代码时出现错误:
错误:无法找到或加载主类 classpath=.home.bitsbridge.Videos.HomeHealthGrouper.dist.HomeHealthJava.jar:.home.bitsbridge.Videos.HomeHealthGrouper.dist.HH_PPS_V_API.jar
但是在执行时它无法加载类路径中提到的 jar 文件并且它给出了错误:
Java(TM) SE 运行时环境 (build 1.7.0_80-b15) Java HotSpot(TM) 服务器 VM(内部版本 24.80-b11,混合模式)错误:无法找到或加载 主班 类路径=.home.Desktop.HPPP.HomeHealthGrouper.dist.HomeHealthJava.jar:.home.D esktop.HPPP.HomeHealthGrouper.dist.HH_PPS_V_API.jar
PS:我已经检查了java路径。
这是/etc/environment/的内容:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/$
JAVA_HOME="/usr/lib/jvm/java-7-oracle"
请帮忙找出问题。我被困在这里一个多星期了
我已经更新了上面提到的 shell 代码,并且在 shellcheck.net 上检查过代码是无问题的:
#!/bin/bash
BASEDIR=/home/Desktop/HPPP/HomeHealthGrouper
FILE=/home/Desktop/HPPP/HomeHealthGrouper/config/logging.properties
export HH_CLASSPATH=.:/home/Desktop/HPPP/HomeHealthGrouper/dist/HomeHealthJava.jar:.:$BASEDIR/dist/HH_PPS_V_API.jar
JAVA_VERSION="$(java -version)"
export JAVA_VERSION
export TEST_FILE=$BASEDIR/TestData/TestDataV6117.txt
export OPTIONS=1
java "$JAVA_VERSION" -Xms512m -Xmx512m -Djava.util.logging.config.file="$FILE"\
-classpath="/home/Desktop/HPPP/HomeHealthGrouper/dist/HomeHealthJava.jar:/home/Desktop/HPPP/HomeHealthGrouper/dist/HH_PPS_V_API.jar" com.mms.cms.homeHealth.test.HomeHealthGrouper_HP\
"input=/home/Desktop/HPPP/HomeHealthGrouper/TestData/TestDataV6117.txt" "config=/home/Desktop/HPPP/HomeHealthGrouper/config/HomeHealthGrouper.properties"\
$OPTIONS
export BASEDIR=""
export HH_CLASSPATH=""
export TEST_FILE=""
export OPTIONS=""
以上代码执行后的输出:
- ./javaaad.sh java版本“1.7.0_80” Java(TM) SE 运行时环境 (build 1.7.0_80-b15) Java HotSpot(TM) 服务器虚拟机(构建 24.80-b11,混合模式) 错误:无法找到或加载主类
出现错误:
错误:无法找到或加载主类
【问题讨论】:
-
找不到问题所在。通过[ shellcheck ]运行脚本
-
我不确定投反对票的目的是什么。没有合理评论的否决票无济于事。 :-(恕我直言
-
感谢网站。结构有一点点变化。希望它能正常工作,谢谢 sjsam
-
即使我不知道投反对票的原因。
-
@mpk24 嗯。如果您是 bash 新手,那么 shellcheck 是一个非常宝贵的工具。也可以随意使用
bash -x来调试你的脚本。祝你好运:-)