我有一个Main.java和Test.java类,它们要编译并在Test.java代码中运行Main.java。这是我的代码
Process pro1 = Runtime.getRuntime().exec("javac Main.java");
pro1.waitFor();
Process pro2 = Runtime.getRuntime().exec("java Main");
BufferedReader in = new BufferedReader(new InputStreamReader(pro2.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
我只在Main.java中打印“ ok”,但是此代码不打印任何内容。问题是什么 ?
我修改了代码以包括一些检查:
public class Laj {
private static void printLines(String name, InputStream ins) throws Exception {
String line = null;
BufferedReader in = new BufferedReader(
new InputStreamReader(ins));
while ((line = in.readLine()) != null) {
System.out.println(name + " " + line);
}
}
private static void runProcess(String command) throws Exception {
Process pro = Runtime.getRuntime().exec(command);
printLines(command + " stdout:", pro.getInputStream());
printLines(command + " stderr:", pro.getErrorStream());
pro.waitFor();
System.out.println(command + " exitValue() " + pro.exitValue());
}
public static void main(String[] args) {
try {
runProcess("javac Main.java");
runProcess("java Main");
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是Main.java:
public class Main {
public static void main(String[] args) {
System.out.println("ok");
}
}
当一切都很好时,它就可以工作:
alqualos@ubuntu:~/tmp$ java Laj
javac Main.java exitValue() 0
java Main stdout: ok
java Main exitValue() 0
现在,例如,如果在Main.java中出现一些错误:
alqualos@ubuntu:~/tmp$ java Laj
javac Main.java stderr: Main.java:3: package Systems does not exist
javac Main.java stderr: Systems.out.println("ok");
javac Main.java stderr: ^
javac Main.java stderr: 1 error
javac Main.java exitValue() 1
java Main stdout: ok
java Main exitValue() 0
它仍然显示“ ok”,因为先前编译的Main.class仍然存在,但是至少您可以看到正在运行的进程究竟发生了什么。
问题内容: 我想使用另一个Java程序打开Java GUI。 它已成功编译,但无法运行。它说“无法加载主类”。这是我的代码: HelloWorld类: 问题答案: 您的代码可能失败的地方有很多,例如,由于某种原因它可能无法编译;可能不在操作系统的搜索路径中;该命令可能会失败,因为参数看起来不正确。 我相信您的命令应该看起来更像或者应该在目录的上下文中执行… 您确实需要尽一切努力来诊断潜在的问题,例
问题内容: 我正在编译一个简单的程序 我在命令提示符下输入了Java Test.java,但没有成功 我没有使用任何IDE 我应该在哪里将程序文件放在计算机上 谢谢 问题答案: 您不能直接运行Java源文件。您需要先使用进行编译: 然后,您将获得一个可以运行的.class文件:
问题内容: 如何在Mac上用Java编译和运行程序? 我是新来的。 我还下载了一个在此向我建议的程序,称为wrangler,如果与情况有关。 问题答案: 在Mac OSX或任何主要操作系统上编译和运行Java应用程序非常容易。Apple随OSX一起提供了一个功能齐全的Java运行时和开发环境,因此您要做的就是编写Java程序并使用内置工具来编译和运行它。 编写您的第一个程序 第一步是编写一个简单的
问题内容: 我正在编写一个makefile,它将一个文件编译到另一个目录中,然后我想在不更改目录的情况下运行它。我想按照以下方式做一些事情: Java文件所在的位置,并且makefile不在那里运行。 我怎样才能做到这一点? 问题答案: 我可能会误解这个问题,但是您可以使用 这将在 然后,您可以通过在类路径上包含它来运行它。例如 如果要在其他目录中生成类文件,则可以使用选项。
null (如果可能的话,它应该在db中创建表并生成html文件。我看到了http://velocity.apache.org/,所以是否可以使用它生成java代码。)
主要内容:C++源文件的后缀,g++ 命令C++ 和C语言类似,也要经过编译和链接后才能运行。在《 C语言编译器》专题中我们讲到了 VS、Dev C++、VC 6.0、Code::Blocks、C-Free、 GCC、Xcode 等常见 IDE 或编译器,它们除了可以运行C语言程序,还可以运行 C++ 程序,步骤是一样的,这里不再赘述,读者需要留意的是 C++ 源文件的后缀,以及 GCC 中的 命令。 下图是 C/C++ 代码生成可执行文