I am trying to run the java code from Linux and struggling with error "Error: Could not find or load main class". i have main code "CompareTableCachedRows.java" in "/home/user/test/comp/code" directory which i am able to successfully compile and create "CompareTableCachedRows.class" but when i am trying to run this through java command using shell script its giving an error. tried playing with classpath variable but it doesnt help. any help would be appreciated.
I have main code "CompareTableCachedRows.java" in "/home/user/test/comp/code" directory which i am able to successfully compile and create "CompareTableCachedRows.class" but when i am trying to run this through java command using shell script its giving an error. tried playing with classpath variable but it doesnt help. any help would be appreciated.
#!/bin/ksh
CONFIG_DIR="/home/user/test/comp/code/CustomJobs/configs"
INPUT_DIR="/home/user/test/comp/code/CustomJobs/inputs"
TBL_FILE=$CONFIG_DIR/MASTER-LIST.sql
INFILE=$INPUT_DIR/firm-cases.txt
OB="CompareTables"
JOBCLASS="AcctExtract"
# DEV2:
ACCT_SVR_JDBC1="actdev2db.nam.nsroot.net:7096/ActDbAct?DYNAMIC_PREPARE=false&ENCRYPT_PASSWORD=true&SQLINITSTRING=set quoted_identifier off"
# DEV3:
ACCT_SVR_JDBC2="oraasgtd46-scan.nam.nsroot.net:8889/DEV"
LEFTDB=SYBASE
RIGHTDB=ORACLE
ACCT_USER1=xxxx
ACCT_PSWD1=xxxx
ACCT_USER2=yyyy
ACCT_PSWD2=yyyy
LOGDIR="/home/user/test/comp/temp"
WORKFILE=$INFILE
LOGFILE=$LOGDIR/tbl_compare.log
COMPARE_FILE=$LOGDIR/tbl_compare.csv
echo Account Address Uploading
echo Original INFILE is $INFILE
echo LOGFILE is $LOGFILE
rm -f $LOGFILE
echo Original INFILE is $INFILE > $LOGFILE
DAILYBTCH_INSDIR="/home/user/test/comp/code/CustomJobs/"
lib_dir="/home/user/test/comp/lib"
classes_dir="$DAILYBTCH_INSDIR/bin"
CLASSPATH=${classes_dir}
for f in \
${lib_dir}/ojdbc7-12.1.0.2.jar \
${lib_dir}/jconn4.jar \
${lib_dir}/EccpressoFIPS.jar \
${lib_dir}/EccpressoFIPSJca.jar
do
CLASSPATH="${CLASSPATH};$f"
done
export CLASSPATH
java_bin="/export/opt/jdk/1.7.0_45l64/bin"
java_options="-Xms128m -Xmx256m -Djava.awt.headless=true"
main_class="/home/user/test/comp/code/CompareTableCachedRows"
echo ""
echo "==================================="
echo "Classes Dir : ${classes_dir}"
echo "Source Dir : `pwd`"
echo "Java bin dir : ${java_bin}"
echo "Java options : ${java_options}"
echo "Java main class : ${main_class}"
echo "Java lib dir : ${lib_dir}"
echo "Java Classpath : ${CLASSPATH}"
echo "DB Host-Port-1: ${ACCT_SVR_JDBC1} "
echo "DB Host-Port-2: ${ACCT_SVR_JDBC2} "
echo "DB User : ${ACCT_USER}"
echo "==================================="
echo "===================================" >> $LOGFILE
echo "Classes Dir : ${classes_dir}" >> $LOGFILE
echo "Source Dir : `pwd`" >> $LOGFILE
echo "Java bin dir : ${java_bin}" >> $LOGFILE
echo "Java options : ${java_options}" >> $LOGFILE
echo "Java main class : ${main_class}" >> $LOGFILE
echo "Java lib dir : ${lib_dir}" >> $LOGFILE
echo "Java Classpath : ${CLASSPATH}" >> $LOGFILE
echo "DB Host-Port-1: ${ACCT_SVR_JDBC1} " >> $LOGFILE
echo "DB Host-Port-2: ${ACCT_SVR_JDBC2} " >> $LOGFILE
echo "DB User : ${ACCT_USER} " >> $LOGFILE
echo "===================================" >> $LOGFILE
java ${java_options} -cp "/home/user/test/comp/lib/*" /home/user/test/comp/code/CompareTableCachedRows.class \
-tblListFile $TBL_FILE \
-inputFile "${WORKFILE}" \
-dbHostPort1 "${ACCT_SVR_JDBC1}" \
-dbHostPort2 "${ACCT_SVR_JDBC2}" \
-dbType1 Sybase \
-dbType2 Oracle \
-dbUsr1 "${ACCT_USER1}" -dbPw1 "${ACCT_PSWD1}" \
-dbUsr2 "${ACCT_USER2}" -dbPw2 "${ACCT_PSWD2}" \
-asUsr "${ACCT_USER}" >> $LOGFILE 2>&1
errcode=$?
echo "#####################"
echo "Finished $0 at `date`"
echo "#####################"
echo "Finished $0 at `date`" >> $LOGFILE
grep -E '^#' $LOGFILE | sed -e "s/^#LEFT/${LEFTDB}/" -e "s/^#RIGHT/${RIGHTDB}/" -e "s/^#ONLY-IN-LEFT/ONLY-IN-${LEFTDB}/" -e "s/^#ONLY-IN-RIGHT/ONLY-IN-${RIGHTDB}/" \
-e "s/LEFT=/${LEFTDB}=/" -e "s/RIGHT=/${RIGHTDB}=/" > $COMPARE_FILE
exit $errcode
I am expecting this script to execute the main code in "CompareTableCachedRows.class" using tablelist and other config files being passed as parameters.