即时开发可以在PC上编译/运行现有java文件的项目。
大多数代码工作得很好,但我在获取java文件的路径时遇到了问题。
这是有问题的代码
void uploadJ() {
System.out.print("Insert File name : "); //ex)HelloWorld.java
FileName = sc.next();
}
void Compile(){
String s = null;
File file = new File(FileName);
String path = file.getAbsolutePath();
try {
Process oProcess = new ProcessBuilder("javac", path).start();
BufferedReader stdError = new BufferedReader(
new InputStreamReader(oProcess.getErrorStream()));
while ((s = stdError.readLine()) != null) {
FileWriter fw = new FileWriter(E_file, true);
fw.write(s);
fw.flush();
fw.close();
}
} catch...
}
例如,当我将HelloWorld.java作为文件名时,
HelloWorld.java的绝对路径应为 C:\ Users \ user \ eclipse- 工作空间\ TermProject \ SRC \ HelloWorld.java ,
但结果是 C:\ Users \ user \ eclipse- 工作空间\ TermProject \ HelloWorld.java
它错过了 / src / 所以它始终以 javac:找不到文件错误结束。 < / p>
答案 0 :(得分:0)
编译应用程序后,将没有src
目录。此工作目录也可以设置为任何内容。
您也不能保证您要查找的文件是实际文件,在jar文件的上下文中,它不是。
但是,您可以从类路径加载文件。您可以使用Class#getResourceAsStream(String)
:
查找具有给定名称的资源。搜索与给定类关联的资源的规则由类的定义类加载器实现。
查找文件可以通过调用this.getClass().getResourceAsStream("/" + FileName)
来完成,/
会导致从资源根目录进行搜索。
要与javac
一起使用,您必须创建一个临时文件,并使用从getResourceAsStream
获得的数据流填充该文件。