runtime.exec() 如何运行一个jar文件

rgbaflf 2011-12-01 02:45:59
项目结构是这样的
一个java程序(定义为A) 使用 runtime.exec("java -jar E:\B.jar") 运行一个 jar 程序(定义为B)
B里面也使用了 runtime.exec("E:\C.exe") 运行一个 exe 程序 (定义为C)

现在 手动启动A, A启动B, B启动C
问题来了 B启动C后,我期望的是正常情况还会往下执行B后面的代码
但是 B启动C后 却一直卡在那里(进程管理器中显示C已经在那里了)必须把A给关了 B才会继续执行后面的代码
如果B不由A启动的话 手动启动 也不会出现以上情况
这是为啥?有什么方法解决吗?
...全文
442 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rgbaflf 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qybao 的回复:]
不要直接这样调用,可以通过start来调用
runtime.exec("cmd /c start java -jar E:\B.jar");
[/Quote]

请问下为什么不能直接调用 有什么原因吗?
huntor 2011-12-02
  • 打赏
  • 举报
回复
如果文件关联正确的话,就是你双击可以启动jar,可以这样:
java.awt.Deskotp.getDesktop().open(new java.io.File("E:\\B.jar"));


我这样把yed启动起来
clojure -e '(-> (java.awt.Desktop/getDesktop) (.open (java.io.File. "/opt/local/share/yed/yed.jar")))'
qybao 2011-12-01
  • 打赏
  • 举报
回复
不要直接这样调用,可以通过start来调用
runtime.exec("cmd /c start java -jar E:\B.jar");
rgbaflf 2011-12-01
  • 打赏
  • 举报
回复
自己搞定了 是log4j的问题 log4j 配置文件中取消控制台输出 就OK了

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧