今天把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 &
?
?
?
?