调用exe文件,有谁知道怎么处理麽?在线等...

applandtea 2009-11-18 01:20:34
我写了个编辑器,现在我要调用 java JDK 下面的java.exe和javac.exe文件,来编译和运行我编辑好的文件。
可是现在遇到一个问题,javac命令 能够直接 用 "javac.exe C:\\try.java"
但是java.exe好像不行,由于编译出来的文件时try.class ,而java运行命令要用"java.exe C:\\try",这时会出现找不到文件的情况。
请问如果我要用java命令执行C:\\try.class,应该怎么写啊?


顺便问一下,如果我的文件路径有空格,该怎么处理?
比如 "javac.exe C:\\my text\\try.java",这条命令无法运行,该怎么改?

有谁知道怎么改么?本人不胜感激!
...全文
200 18 打赏 收藏 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
applandtea 2009-11-18
  • 打赏
  • 举报
回复
恩,可以了,呵呵,字符串处理不是很会。
谢谢您了!
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
就是这句 Process p = run.exec("java.exe -cp \"C:\\\" try");
改成Process p = run.exec("java.exe -cp C:\\ try");
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
找到问题了,呵呵

没有空格的路径不要加引号,恩
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
恩?我测试下来毫无问题啊………………
我也是在cmd里测试的……

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class test {
public static void main(String args[]) throws Exception {
Runtime.getRuntime().exec("javac \"C:\\my test\\Sort.java\"");
Process p = Runtime.getRuntime().exec("java -cp \"C:\\my test\" Sort");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String next;
while ((next = br.readLine()) != null) {
System.out.println(next);
}
br.close();
p.destroy();
}
}


我是这样一个代码,C:\my test\Sort.java是一个我自己写的排序小程序,执行结果我输出在一个文本里,如下
[-251918451, -392604201, 865205594, -1201009064, -1227039789, 1424678733, -2030454820, 384284945, 1820674383, 1210336436, -856217544, -1185717825, 836652580, -1031831831, 1527469589, -492164693, 1955597521, -90859821, 2118184106, -471902599, 26372843, 746057743, 1764776596, 1470519142, -845388020, -851371569, -1903846678, -1769907504, -950117877, -1738061313, 619772814, -471517189, -863856787, -199694680, 1714255045, 185315601, -1439489766, 193839513, -228825590, 68768106, 1385849427, 800975427, 1956629534, -926127090, -1111480861, 714684901, 1658405987, 2134834807, 1417886612, 887684584, 973435242, 1503493018, 193167588, -843619189, -2146396982, 122733352, 819413240, 1370394562, -998608333, -415643376, 1302470609, -1952746917, -806563902, -1484672695, -1152187203, -1688282269, -1052170346, -26647603, -1095649265, 811160519, 1642552994, 1152376040, 675031058, -972770755, -66546492, 366394802, -589395654, 255363428, 1126064663, -1727995687, -217004644, 616879146, -961014396, -1633749085, -1575555169, 551584877, 736938143, 2145022770, 1925819379, 949999588, 1328700592, 1424965130, 2116470466, -377448640, 385791246, 464062928, 221866022, -1588026482, 1469170355, 1061238100]
[-2146396982, -2030454820, -1952746917, -1903846678, -1769907504, -1738061313, -1727995687, -1688282269, -1633749085, -1588026482, -1575555169, -1484672695, -1439489766, -1227039789, -1201009064, -1185717825, -1152187203, -1111480861, -1095649265, -1052170346, -1031831831, -998608333, -972770755, -961014396, -950117877, -926127090, -863856787, -856217544, -851371569, -845388020, -843619189, -806563902, -589395654, -492164693, -471902599, -471517189, -415643376, -392604201, -377448640, -251918451, -228825590, -217004644, -199694680, -90859821, -66546492, -26647603, 26372843, 68768106, 122733352, 185315601, 193167588, 193839513, 221866022, 255363428, 366394802, 384284945, 385791246, 464062928, 551584877, 616879146, 619772814, 675031058, 714684901, 736938143, 746057743, 800975427, 811160519, 819413240, 836652580, 865205594, 887684584, 949999588, 973435242, 1061238100, 1126064663, 1152376040, 1210336436, 1302470609, 1328700592, 1370394562, 1385849427, 1417886612, 1424678733, 1424965130, 1469170355, 1470519142, 1503493018, 1527469589, 1642552994, 1658405987, 1714255045, 1764776596, 1820674383, 1925819379, 1955597521, 1956629534, 2116470466, 2118184106, 2134834807, 2145022770]
applandtea 2009-11-18
  • 打赏
  • 举报
回复
用您给的方法好像不行,我在cmd窗口中运行程序以后,运行到
Process p = run.exec("java.exe -cp \"C:\\\" try");
时会在cmd窗口输出java.exe的帮助信息。应该怎么改呢,非常感谢您!
applandtea 2009-11-18
  • 打赏
  • 举报
回复
我用的下面的语句。我运行把运行以后获取到的输入输出流都输出在另外一个编辑框中了。
Runtime run = Runtime.getRuntime();
Process p = run.exec("java.exe -cp \"C:\\\" try");

zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
不行指的是什么?你这样运行肯定是不会跳出cmd窗口来显示东西的
applandtea 2009-11-18
  • 打赏
  • 举报
回复
我运行 C:\根目录下的try.class用下面的语句不行:
exec("java.exe -cp \"C:\\\" try")
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
比如说这个就是
java.exe -cp "C:\my text" try
字符串就是"java.exe -cp \"C:\\my text\" try"
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
回头再看看#2楼………………
如果路径有空格就用引号括起来
applandtea 2009-11-18
  • 打赏
  • 举报
回复
恩,有空格的解决了。那第一个问题java.exe运行文件怎么办呢?
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
#5楼的回复不是已经写出来了么
applandtea 2009-11-18
  • 打赏
  • 举报
回复
请问怎么改呢
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
………………
加引号不是这么加的………………

dos下这样javac.exe "C:\my text\try.java"
字符串就是"javac.exe \"C:\\my text\\try.java\""
applandtea 2009-11-18
  • 打赏
  • 举报
回复
我是在程序中调用exe文件,不是在DOS下运行javac和java
applandtea 2009-11-18
  • 打赏
  • 举报
回复
回2楼 java -cp c:\\try 不行

有空格加引号好像不行。比如我想运行 C:\Documents and Settings\try.java
用 exec("javac"+ " "+ "C:\\Documents"+ " "+ "and"+ " "+ "Settings\\text.java")不能运行
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
少打了个反斜杠………………
java -cp c:\ try
zhuzeitou 2009-11-18
  • 打赏
  • 举报
回复
java -cp c: try呢?

有空格加引号

62,620

社区成员

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

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