由于shell在逻辑上不便于处理较复杂的逻辑,而java正好善于处理此种类型,因此如果能够在linux上通过shell脚本来执行java程序,那么将会是一件非常优雅的事情。因此在这里记录下shell脚本执行java程序的步骤:
其实总体来说只有一个条件:安装了jdk,并且配置了CLASSPATH,然后把你相应的jar包加入CLASSPATH即可。
安装jdk后有些新的版本会自动给你设定CLASSPATH变量,但是很多jdk版本还是要自己设置的,查看系统变量CLASSPATH的linux命令很间的那:echo $CLASSPATH,如果没有加入相应的jdk路径,请加入,主要是jdk主目录和jre目录,例如我的是:/usr/local/jdk/:/usr/local/jdk/jre/:。就是上述格式,按照你的jdk安装目录,进行配置即可。
然后把你要执行的java类打包成jar包,同时作为启动的class类,必须要有main方法,这个也就是默认的执行方法。然后把你的jar包的路径(具体到jar包名)加入变量CLASSPATH中即可,然后通过"java com.demo.test"(com.demo.test为你的java类的具体类名)命令来启动你的java类。例如我的sh脚本大致内容如下;
#!/bin/bash
APP_HOME=/home/root1/test
APP_CLASSPATH=$APP_HOME/bin
jarList=$(ls $APP_CLASSPATH|grep jar)
echo $jarList
for i in $jarList
do
APP_CLASSPATH="$APP_CLASSPATH/$i":
done
echo $APP_CLASSPATH
export CLASSPATH=$CLASSPATH:$APP_CLASSPATH
echo $CLASSPATH
java -Xms50m -Xmx250m com.linux.FirstLinux
echo Linux Test End
exit
如果想要实现定时启动,可以使用linux的crontab -e命令,在其中加入你要启动的sh脚本即可,非常简单,例如我的是:
* 5 * * * //home/root1/test/shjava.sh 90
具体的请参看百度,这个很简单的哈哈。
总体来说就一个原则:把你的jar包加入CLASSPATH变量中,然后通过java 具体类型(包含main方法)来启动即可。