日期:2014-05-16  浏览次数:20637 次

Linux上的运行自开发的JAR包,并替换默认JDK

今天把Windows上的消息收发平台部署到Linux上,始终不正确,执行java -version一直是jdk1.4.

最后解决方法如下:

1:修改/etc/profile文件

[root@localhost server]# vi /etc/profile

??? 在文件最后增加JAVA_HOME、PATH配置

?

?

JAVA_HOME=/weblogic/jdk160_18
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

?2:执行/etc/profile文件后,再查看版本,已经是上面配置的JDK6了,我直接使用的Weblogic的jdk。

??????? 从windows下拷贝去的JDK,要注意是否是能在Linux下用的,我就是把Windows下安装的JDK拷去,结果悲催了半天。。

[root@localhost server]# . /etc/profile
[root@localhost server]# java -version
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Server VM (build 16.0-b13, mixed mode)

? 4:为要执行的java类,配置CLASSPATH,我这里有一堆log4j等外部的jar包:

[root@localhost server]# export CLASSPATH=.:$CLASSPATH:./ipayrelay-server.jar:./lib/log4j-1.2.16.jar:./lib/jxl.jar:./lib/commons-beanutils.jar:./lib/commons-collections.jar:./lib/commons-digester.jar:./lib/commons-logging.jar:./lib/commons-pool.jar:./lib/lucene-core-3.6.1.jar:./lib/mail.jar:./lib/metouia.jar:./lib/QSAdminGUI.jar:./lib/QuickServer.jar:./lib/quickserver_config.dtd:./lib/quickserver_config.xsd:./lib/QuickServerClient.jar:./lib/ipayrelay-client.jar:./lib/commons-codec-1.7.jar:./lib/commons-httpclient-3.1.jar

?5:最后执行打好的jar包:

[root@localhost server]#java -cp $CLASSPATH com.mfhcd.ipayrelay.server.Server

?6:将上述内容制成脚本执行,我的脚本ipayrelay.sh

#!/bin/sh
source /etc/profile
export CLASSPATH=.:$CLASSPATH:./ipayrelay-server.jar:./lib/log4j-1.2.16.jar:./lib/jxl.jar:./lib/commons-beanutils.jar:./lib/commons-collections.jar:./lib/commons-digester.jar:./lib/commons-logging.jar:./lib/commons-pool.jar:./lib/lucene-core-3.6.1.jar:./lib/mail.jar:./lib/metouia.jar:./lib/QSAdminGUI.jar:./lib/QuickServer.jar:./lib/quickserver_config.dtd:./lib/quickserver_config.xsd:./lib/QuickServerClient.jar:./lib/ipayrelay-client.jar:./lib/commons-codec-1.7.jar:./lib/commons-httpclient-3.1.jar
java -cp $CLASSPATH com.mfhcd.ipayrelay.server.Server

? ?? #!/bin/sh是执行命令的脚本固定的开头, source /etc/profile是将该文件的内容解释执行一遍,让JAVA_HOME生效。

?

7:脚本可能有字符集问题,需要转码,转码后即可解决/bin/sh^M: bad interpreter这种报错:

[root@localhost server]# dos2unix ipayrelay.sh

?8:最后执行脚本,前给脚本授权,我是将当前目录下的文件及其子文件全部授权了,为了方便调用

???

[root@localhost server]#chmod -R 777 .

?9:最后执行脚本:

[root@localhost server]# ./ipayrelay.sh

?10:停止脚本,9090是我的应用绑定的端口号,根据端口号查到PID后,执行kill杀进程

[root@localhost bin]# netstat -lnp | grep 9090
tcp        0      0 :::9090                     :::*                        LISTEN      6406/java           
[root@localhost bin]# kill -9 6406

?上面的脚本也可以通过一句话执行:kill -9 $(netstat -tlnp|grep 9090|awk '{print $7}'|awk -F '/' '{print $1}')

11:后台启动脚本,即使退出ssh也可以运行服务

[root@localhost server]#nohup ./ipayrelay.sh &

?

?

?

?