shell如何调用java
在Shell中调用Java程序
Shell脚本可以通过java命令直接调用Java程序。确保系统已安装Java运行时环境(JRE)或开发工具包(JDK),并将java命令添加到环境变量中。
java -cp /path/to/your.jar com.example.MainClass arg1 arg2
-cp指定类路径(包含JAR文件或.class文件目录)。com.example.MainClass是包含main方法的完整类名。arg1 arg2为传递给Java程序的参数。
传递参数与处理输出
Java程序的标准输出和错误流会直接显示在Shell中。可以通过重定向捕获输出:
output=$(java -jar your.jar arg1 2>&1)
echo "$output"
2>&1将错误流合并到标准输出,便于统一捕获。- 使用
$()将输出存入变量,或通过管道传递给其他命令。
动态编译并运行Java代码
若需在Shell中动态编译Java源代码再运行:
javac HelloWorld.java
java HelloWorld
javac编译.java文件生成.class文件。- 确保当前目录或类路径包含编译后的文件。
后台运行Java程序
使用nohup或&让Java程序在后台运行:
nohup java -jar long_running.jar > output.log 2>&1 &
nohup防止进程因终端关闭而终止。> output.log重定向输出到日志文件。&将进程置于后台。
检查Java版本与路径
在脚本中验证Java环境:
if ! command -v java &> /dev/null; then
echo "Java未安装,请先配置环境。"
exit 1
fi
command -v检查java命令是否存在。- 通过
java -version可获取具体版本信息。
通过Shell脚本传递环境变量
向Java程序传递系统环境变量:
export MY_VAR="value"
java -DMY_VAR="$MY_VAR" -jar app.jar
-D设置Java系统属性,在代码中通过System.getProperty("MY_VAR")获取。
处理依赖库的多JAR调用
当程序依赖多个JAR时,使用通配符或显式列表:

java -cp "lib/*:main.jar" com.example.Main
lib/*加载lib目录下所有JAR文件(注意路径分隔符在Windows中是;,Linux/macOS是:)。






