如何让java使用文件的最新版本
我有一个问题,我有一个程序,它编写并创建一个.java文件,然后把它放在我的包文件夹中,然后它从.java文件中获取信息,并自己使用它。(它使用我随后导入的方法创建一个新类)。 问题是,如果它在我使用eclipse更新“自创文件”之前无法工作。有没有办法让我的主文件更新为“自创文件” 对不起,如果这是重复的。我只是在任何地方都找不到它 我的代码:如何让java使用文件的最新版本,java,eclipse,Java,Eclipse,我有一个问题,我有一个程序,它编写并创建一个.java文件,然后把它放在我的包文件夹中,然后它从.java文件中获取信息,并自己使用它。(它使用我随后导入的方法创建一个新类)。 问题是,如果它在我使用eclipse更新“自创文件”之前无法工作。有没有办法让我的主文件更新为“自创文件” 对不起,如果这是重复的。我只是在任何地方都找不到它 我的代码: package dk.Nicolai.Bonde; import java.io.*; public class main { public St
package dk.Nicolai.Bonde;
import java.io.*;
public class main {
public String outputString ="Math.sqrt(25)" ;
static String outputPath ="src/output.txt";
/**
* @param args
* @throws UnsupportedEncodingException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws IOException{
new main().doit(args);
}
public void doit(String[] args) throws IOException{
PrintWriter writer = new PrintWriter("src/dk/Nicolai/Bonde/calculate.java", "UTF-8");
writer.println("package dk.Nicolai.Bonde;");
writer.println("public class calculate{");
writer.println("public void calc(){");
writer.println("System.out.println("+outputString+");");
writer.println("}");
writer.println("}");
writer.flush();
writer.close();
calculate calcObj = new calculate();
calcObj.calc();
}
}
不,你不能。您必须在Eclipse中手动更新资源。尽管您可以为Eclipse编写一个插件来运行您的文件和更新资源
Eclipse使用目录和文件存储其资源,但不是文件系统的直接表示形式。您的代码无法工作,因为
- 在main的编译时需要计算。您可以在运行时提供它
- calculate.java不会编译,因此即使是其他动态加载类的技术也无法工作
如果您想在运行时生成类,请考虑使用反射式API
,您的主要错误是,您预期在运行时自动将其编译成<代码>类< /COD>文件(SeaEng/Engult>文件(SeaEngide,例如Eclipse在您按压CTRL+S时,在后台自动为您做)。因此,情况并非如此。在运行时,您需要自己编译它,然后按加载。相关问答中给出了一个具体示例: 在具体示例中,您还将注意到,您不能只执行new calculate()代码>之后。类路径不会在运行时自动刷新。您需要执行一个类#forName()
,传递FQN和URLClassLoader
。例如
Calculate calculate = (Calculate) Class.forName("com.example.Calculate", true, classLoader);
另一个错误是,您依赖于磁盘文件系统的当前工作目录始终是Eclipse项目的源根文件夹。这是不健全的。构建和分发应用程序时,此文件夹根本不存在。您应该将文件写入IDE项目结构之外的固定/绝对文件夹。上述链接的答案中也包含了这一点。即使他做了所有这些,他也无法像现在这样静态地引用课堂+1,但是请考虑将这些信息添加到您的答案中。但是是的,这也很重要。编辑。