如何把linux中运行java程序序打包成linux下可运行的客户端

博客分类:
通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过。基本原理是,首先通过 Runtime.getRuntime() 返回与当前 Java 应用程序相关的运行时对象,然后调用run.exec(cmd)
另启一个进程来执行命令(cmd为要执行的命令)。
一、运行一个可执行程序
执行一个.exe的文件,或通过已安装的软件打开一个特定格式的文件,如word、chm或mp3等等。
1. 在window下可以直接执行一个.exe文件,如执行我在F盘下的tomcat安装文件,将命令写为:
String cmd = "F:\\apache-tomcat-6.0.20.exe";
2. 打开一个word文档。如果系统已经安装了office应用程序,就可以通过调用word的可执行程序来打开一个word文档:
String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc";
当然这样写有点麻烦,我们想打开一个word文档时只要双击就可以了,用不着去找WINWORD.EXE。要是打开每一种格式的文件都得去找它的可执行程序,那可累死了,我们可以通过下面的代码,打开任意一个已知格式的文件(只要安装的打开这种文件格式的软件),相当于用鼠标双击一个文件的图标:
String cmd = "cmd.exe /c start F:\\test.doc";
我用C写了一个进程操作的小例子,放在 linux 下编译出的可执行文件叫“fork_wait”,然后把我的java文件编译成TestRunTime.class后扔到 linux 上,在控制台执行 java TestRunTime 命令,TestRunTime 和 fork_wait 程序均运行成功。
String cmd = "./fork_wait";
二、执行一个有标准输出的系统命令
通过调用进程的 getInputStream() 方法,可以获得执行命令的标准输出。在 windows 的cmd控制台窗口和 linux 控制台执行系统名利的格式是一样的,只是输入的命令不同而已。
如要执行windows控制台中ping命令,可写为:String cmd = "ping ";
执行linux的ls命令,可写为:String cmd = "ls -l";
如果要执行一个带参数的命令,可使用 String 数组形式,如:
String[] cmd=new String[3];
cmd[0]="/bin/sh";
cmd[1]="-c";
cmd[2]="ls -l ./";
下面是我写的小例子:
package com.why.RunT
import java.io.BufferedInputS
import java.io.BufferedR
import java.io.InputStreamR
public class TestRunTime {
public static void main(String[] args) {
String cmd = "F:\\apache-tomcat-6.0.20.exe";
String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc";
String cmd = "cmd.exe /c start F:\\test.doc";
String cmd = "ping ";
String cmd = "./fork_wait";
String cmd = "ls -l";
String[] cmd=new String[3];
cmd[0]="/bin/sh";
cmd[1]="-c";
cmd[2]="ls -l ./";
Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象
Process p = run.exec(cmd);// 启动另一个进程来执行命令
BufferedInputStream in = new BufferedInputStream(p.getInputStream());
BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
String lineS
while ((lineStr = inBr.readLine()) != null)
//获得命令执行后在控制台的输出信息
System.out.println(lineStr);// 打印输出信息
//检查命令是否执行失败。
if (p.waitFor() != 0) {
if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束
System.err.println("命令执行失败!");
inBr.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
浏览 57454
如果是执行一段脚本,bat或则是shell,你如何判断成功与否?p.waitfor的返回值只是脚本中最后一个命令执行返回的结果,万一你中间有那条命令执行错误最后一条却成功,那岂不是判断执行成功?感谢关注先!再说这个p.waitfor返回的并不是脚本中哪个命令的执行结果,而是这个脚本是否正常执行完毕,就算一个脚本中的所有命令都执行失败,只要这个脚本能执行完,就返回成功。
浏览: 319614 次
来自: 哈尔滨
如何在java Web项目中开发WebService接口,地址 ...
如何在java Web项目中开发WebService接口,地址 ...
如何在java Web项目中开发WebService接口,地址 ...
[color=red][/color] 学习了
我很喜欢你对设计模式的理解。
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'【深入JAVA】程序打包成Jar包运行并读取外部配置文件
不勾选配置文件选项) 三、运行jar包 在linux下执行jar包引入外部配置文件的命令(window下比如进入d: 同样的道理,java -jar XXX.jar config.properties):
java -jar db2Util-uberjar.jar /opt/pasier
10:02&&&[]
打包右键 export -& java -& JAR file &
之后即打包jar & 打开jar包,如下图所示:
(jar包里面依赖的部分*.jar 文件,其实在打包过程中是可以删除出去了,避免部分公用的jar包重复引入,如下图所示的jar文件
17:33&&&[]
后再打包。
把路径改成绝对路径,应该就可以了
如果不希望把配置文件之类的打到jar里,那么用
String&sPath=&System.getProperty(&user.dir&);
然后配置文件的路径为
String&nbsp
22:11&&&[]
一直下一步就可以了 只要计算机装了java jdk就可以执行jar文件了
如果运行时闪退可以选择下面的方式 单前提你得配置好java 环境变量
在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径,在这里就填写“C:\Program
16:01&&&[]
各位大侠,我现在有一socket项目里面有第三方支持jar包,现在想将这个socket项目打包成server.jar和client.jar如何实现呢!!!
回复讨论(解决方案)
把工程分为两个,一个是服务端,一个客户端
用eclipse打包就可以
或者用ant&nbsp
-19:29&&&[]
程序打成jar以后,如何读取配置文件?
回复讨论(解决方案)
改用ClasspathXmlApplicationContext啊,xml文件放jar包中就行了
在运行正常的情况下把工程所有jar&&以及所有文件打包成一个jar&就OK了
...真蠢,这个
-10:02&&&[]
-jar jar包名,如& java -jar my.jar & 二.在Eclipse中 && 1.打包成一般jar包 &&&&&&&&&& (1)要打包的项目上
08:36&&&[]
正常使用jar.exe命令,它会用lib\tool.jar工具包中的类。这些细节就不用管它了。
作为一个有点工作经验的码农,我们经常在玩新的项目的时候都会有自己的一套工具类,如果每次都用来自己将源码放入项目也太土了点,所以呢将自己写的经常用的java文件打包成jar以后方便自己使用就很有必要
12:13&&&[]
回复讨论(解决方案)
包外的恐怕只有使用绝对路径了
包外的恐怕只有使用绝对路径了
那样的话岂不是整个可运行的程序都不能移动了吗?还有没有别的办法?
想补充问一下,一般情况下,在开发过程中的配置文件是如何处理或者放置的?
一般应该不会点jar包直接执行的,win下应该是用
-10:40&&&[]
&当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行。 1.Java程序用MyEclipse打包成可运行的jar包 (1)在MyEclipse中选中需要打包的项目,点击右键,选择:Export... 如下图所示
21:44&&&[]
用Runtime.exec试了几次貌似运行不了...
回复讨论(解决方案)
把这个文件从jar中释放到磁盘文件系统再执行
你看我的问题内容了吗?
别那么自以为是好不好,自己去试试看!
把这个文件从jar中释放到磁盘文件系统再执行
17:10&&&[]
java程序已经打包成。jar文件怎么才能在没有安装JDK的电脑上运行呢
听说是把jre一起打包....求具体操作...急&。。。。谢谢&高手指点....
回复讨论(解决方案)
把jre和jar放到同一个目录就可以了
可以制作安装包
16:30&&&[]&&完java项目如何自动打包部署发布到Linux下的Tomcat?最近发现在开发中部署比较多,项目是maven项目,然后有前端后端加一个公共的jar包,里面存放和数据库交互的dao层和mybatis文件,每次部署是先去关掉tomcat,然后把项目打成war包,然后解压,替换对应的class文件,一次2次还好,次数多了就感觉很浪费时间,去网上找的那些资料都解释太模糊,所以我想问下大家这种都是公司的运维弄好了吗?如果我想自己弄该怎么去搭建这么一个自动化部署的工具。谢谢大家了1个牛币所有回答列表(3)如果都是重复工作的话,可否考虑写个批处理。用命令停止tomcat。然后用maven命令编译。再用命令unzip。cp替换,然后再打包。启动tomcat。最佳答案&LV2cargo 我知道可以实现 但是我没用过&LV4参考下我之前发布的分享吧思路就是通过在服务器上进行svn checkout源码或update源码然后build之后将文件copy覆盖到项目的运行目录,然后再重启tomcat,如果想不影响服务可以多个tomcat之间切换等等等等等完等完完等完等相关问答等完完等完等完等等等等完最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友

我要回帖

更多关于 java程序打包运行 的文章

 

随机推荐