我尝试从 Linux 脚本编译 Java 项目,run_nmc_engine.sh
.问题是我在启动它时收到错误:
Error: Could not find or load main class caos.aaai.CaosNMCEngine
我在脚本中启动的命令或多或少是,
java -Xmx${MAXMEM} -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.CaosNMCEngine blablabla ...
我没有全部添加,因为我认为错误与命令的第一部分有关。我不知道在哪里JCHEM
,但我知道它是
化学表示、搜索、存储、结构和非结构数据管理功能的实现。从ChemAxon 网站
似乎找不到CaosNMCEngine.java 文件在哪里。然而,我认为它很好地放置在文件夹中:
您可以在以下位置找到整个项目GitHub上项目的网页。如果您需要更多信息来完成自述文件,请告诉我。也许你会更幸运地将脚本与来自的脚本进行比较原来的项目。
完整的脚本是:
JCHEM=/Applications/ChemAxon/JChem-5.7.0
MAXMEM="2G"
if [[ `uname -a | grep Linux` ]] ;
then
JCHEM=/gpfs/home/aheifets/opt/jchem-5.7.1
MAXMEM="8G"
fi
TOP=`cd $(dirname $0)/../..; pwd -P`
PATH=$PATH:${JCHEM}/bin
# rm ReactorDemo.class
# javac -cp .:/Applications/ChemAxon/JChem-5.7.0/lib/jchem.jar -Xlint:unchecked ReactorDemo.java
# java -cp .:/Applications/ChemAxon/JChem-5.7.0/lib/jchem.jar ReactorDemo $1 $2 $3 #| tee /dev/stderr | mview - &
#rm RetroTests.class
#javac -cp .:/Applications/ChemAxon/JChem-5.7.0/lib/jchem.jar -Xlint:unchecked RetroTests.java
#java -cp .:/Applications/ChemAxon/JChem-5.7.0/lib/jchem.jar RetroTests $1 $2 $3 #| tee /dev/stderr | mview - &
date
#java -Xmx2G -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.CaosEngine ${TOP}/data/cleaned_reaction_library_JChem_5.7.0_DISABLED ${TOP}/data/SML ${TOP}/data/33.smiles 8000 0 ${TOP}/data/BENCHMARK/PROBLEMS/GlobalRXNs ${TOP}/data/BENCHMARK/PROBLEMS/GlobalSML
#java -Xmx2G -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.CaosEngine ${TOP}/data/BENCHMARK/PROBLEMS/3/RXNs ${TOP}/data/BENCHMARK/PROBLEMS/3/SML ${TOP}/data/BENCHMARK/PROBLEMS/3/goal_d3.smarts 1 0 ${TOP}/data/BENCHMARK/PROBLEMS/GlobalRXNs ${TOP}/data/BENCHMARK/PROBLEMS/GlobalSML
#PROBLEM=16
# for PROBLEM in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 18.1 19 20
#for PROBLEM in 11 #8 10 11 12 #1 12 14 15 16 #15 #11 12 14 16 18 19 8 9
for PROBLEM in 2
do
OUTDIR=rxndebug #exhaust #
mkdir -p ${TOP}/out/${OUTDIR}/${PROBLEM}
LOG=${TOP}/out/${OUTDIR}/${PROBLEM}/log
ERR=${TOP}/out/${OUTDIR}/${PROBLEM}/err
echo "==================================PROBLEM ${PROBLEM}=================================="
echo "==================================PROBLEM ${PROBLEM}==================================" > ${LOG}
echo "==================================PROBLEM ${PROBLEM}==================================" > ${ERR}
date
date > ${ERR}
#java -Xmx${MAXMEM} -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar test.ReactorDemo2 $*
#java -Xmx${MAXMEM} -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.OperatorLibrary
#java -Xmx${MAXMEM} -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.CaosEngine ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/RXNs ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/SML ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/goal.smiles 10000 0 ${TOP}/data/BENCHMARK/PROBLEMS/GlobalRXNs_DISABLED ${TOP}/data/BENCHMARK/PROBLEMS/GlobalSML >${LOG} 2>${ERR}
java -Xmx${MAXMEM} -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.CaosNMCEngine ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/RXNs_DISABLED ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/SML ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/goal.smiles 10000 0 ${TOP}/data/BENCHMARK/PROBLEMS/GlobalRXNs ${TOP}/data/BENCHMARK/PROBLEMS/GlobalSML >${LOG} 2>${ERR}
#java -Xmx${MAXMEM} -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.CaosEngine ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/RXNs ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/SML ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/goal.smiles 5 0 ${TOP}/data/BENCHMARK/PROBLEMS/GlobalRXNs ${TOP}/data/BENCHMARK/PROBLEMS/GlobalSML EXHAUSTIVE >${LOG} 2>>${ERR}
#java -Xmx${MAXMEM} -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.CaosEngine ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/RXNs ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/SML ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/subgoals/goal_c.smiles 100 0 ${TOP}/data/BENCHMARK/PROBLEMS/GlobalRXNs ${TOP}/data/BENCHMARK/PROBLEMS/GlobalSML
#java -Xmx${MAXMEM} -cp .:${TOP}/build:${JCHEM}/lib/jchem.jar caos.aaai.CaosEngine ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/RXNs ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/SML ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/subgoals/solution_B.smiles 100 0 ${TOP}/data/BENCHMARK/PROBLEMS/GlobalRXNs ${TOP}/data/BENCHMARK/PROBLEMS/GlobalSML
diff -b $LOG ${TOP}/data/BENCHMARK/PROBLEMS/${PROBLEM}/SOLUTION.txt
date
date >> ${ERR}
echo ${LOG}
done
答案1
1)那时java
确实在寻找 a ,而不是..class
.java
2) 如果您拥有的 .class 已命名,caos.aaai.CaosEngine
则在添加到类路径的每个目录或 JAR 中java
查找(即向下两个目录)。caos/aaai/CaosEngine.class
将所有类打包在 JAR 中通常更简单,JAR 的 MANIFEST.MF 文件有一个Main-Class: classname
指向该类main()
的条目,然后使用以下命令启动应用程序java -jar {the_jar}