java 命令执行jar包 -cp 与 -classpath

DAY DAY UP 2023年06月28日 415次浏览

windows 环境:

目标表 jar 和 lib 库在一起

java -classpath lib/* com.linewell.flink.demo.task.TaskHandle

java -cp lib/* com.linewell.flink.demo.task.TaskHandle

Windows cmd 中正常运行,jar 与 lib 不在同一个包; 注意分隔符用 ;

java -cp flink-task-0.0.1-SNAPSHOT.jar;lib/*; com.linewell.flink.demo.task.TaskHandle

cmd 中正常运行,jar 与 lib 在同一个包;注意分隔符用 ;

java -cp lib/*; com.linewell.flink.demo.task.TaskHandle

linux 环境:

目标表 jar 和 lib 库在一起; 多个jar 包用 : 连接

执行报错, linux 必须明确指定 -cp 后的每一个 jar 包

java -cp lib/* com.linewell.flink.demo.task.TaskHandle

通过 shell 脚步拼接

#!/bin/sh

#改一下这里的java路径
JAVA_HOME="/home/java/jdk-8"

#下面不修改
export LC_ALL=zh_CN.GBK
echo "JAVA_HOME : $JAVA_HOME"

"$JAVA_HOME/bin/java" -version

MSCLASSPATH="./classes:./:."
for i in ./lib/*.jar; do
 MSCLASSPATH="$MSCLASSPATH":"$i"
done
export CLASSPATH="$MSCLASSPATH"
exec "$JAVA_HOME/bin/java" -Dfile.encoding=GBK -classpath "./:$CLASSPATH" com.linewell.flink.demo.task.TaskHandle $1