怎样使用linux运行java程序
使用linux运行java程序具体步骤如下:
1Windows上使用eclipse编译java工程,编译完成后导出为Runnable JAR File。
例如,此处将test工程中的Test2文件export为MyTest2jar文件。
2Ubuntu上java环境安装。
①jdk官网http://wwworaclecom/technetwork/java/javase/downloads/jdk8-downloads-2133151html下载Linux上使用的jdk。
②eclipse官网http://wwweclipseorg/downloads/packages/eclipse-ide-java-developers/heliossr1/下载Linux上使用的eclipse。
③将jdk和eclipse上传到Linux服务器并解压,然后配置java环境变量(egjdk的解压目录是/home/test)。
配置方法:编辑/etc/profile文件,添加如下内容(备注:Linux中冒号:用于分隔路径,点号表示当前目录)。
编辑完成后保存文件
④使配置生效,命令 source /etc/profile
⑤测试环境变量是否配置成功,命令java -version,显示jdk版本,则表示java环境变量配置成功。
你是要单次运行还是不挂断在后台运行?单次直接java -jar xxxjar 就可以了,不挂断的话,可以编写一个shell脚本,startsh 内容如下
#!/bin/sh
nohup java -jar -XX:PermSize=64m -XX:MaxPermSize=128m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:SurvivorRatio=8 xxxjar>/dev/null 2>&1 &
具体的参数你自己把握,然后保存,给这个脚本赋于可执行权限,chmod +x startsh
然后执行这个脚本,sh startsh ,然后查看一下java进程,看这个服务起来没有,jps
java 应用程序在linux部署方法:
1,将项目达成war包(用eclipse,项目右键--Export--选择war file)
2,将tomcat(用winSCP当然也可以用secureCRT,用securCRT需要建立sftp(即上传文件的目录),用put tomcat命令)考到ilunx对应的目录下
3,然后将项目的war包放到tomcat的webapps目录下
4,启动tomcat(命令:/startupsh(linux下启动tomcat是sh文件而非bat文件))
遇到问题如下:
运行/startupsh 是报错
-bash: /startupsh: Permission denied
原因:没有运行sh的权限
解决:chmod 777 sh
755 代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。
777代表,user,group ,others ,都有读写和可执行权限。
获得权限后再运行/startupsh命令时报错:
This file is needed to run this program
原因:该文件需要一个运行环境(即配置jdk环境变量)
解决:JAVA_HOME=/usr/java/jdk160_25/(当然这个目录根据自己的jdk安装目录)
然后在运行/startupsh 提示:
Using CATALINA_BASE: /usr/local/sarft/apache/apache-tomcat-6029
Using CATALINA_HOME: /usr/local/sarft/apache/apache-tomcat-6029
Using CATALINA_TMPDIR: /usr/local/sarft/apache/apache-tomcat-6029/temp
Using JRE_HOME: /usr/java/jdk160_25/
Using CLASSPATH: /usr/local/sarft/apache/apache-tomcat-6029/bin/bootstrapjar
如果提示以上信息表明 tomcat启动成功,可以正常run了。
如果想要都支持,并且使用相同端口,也就是说,一个网站中可以运行多种格式的web程序。
那就用IIS搭建全能服务器。
只有IIS能对这么多语言同时支持比较好。其它像apache/tomcat之类的对微软的ASP和net支持不好。
安装IIS+php+Resin
就实现了。
如果有多台服务器做集群,就更好了。可以分别安装一个ASP服务器,一个PHP服务器,一个JAVA服务器。然后用一个前端服务器来监听80端口,根据浏览器请求的网页类型,转发到不同的服务器去解析。虽然在一台服务器上用不同端口也可以实现该功能,但不推荐。
无论采用Thread还是别的什么,在Java里,只要程序跑到了main的return,就会结束。daemon线程一样会被主线程结束掉。
参考Core java II
在main里这样写:
while(true) {
Socket s = socketaccept();
//这个地方new 一个线程出来对这个s对象指向的socket实例进行操作
}
通过系统的kill命令结束进程退出。
也可以在main开始的时候起一个监视Systemin的线程,当用户输入exit时候退出。
0条评论