java - 如何让java使用最新版本的文件

标签 java eclipse

我遇到这个问题,我有一个程序可以编写和创建一个 .java 文件并将其放在我的包文件夹中,之后它会从 .java 文件中获取信息并在其中自行使用它。 (它使用我随后导入的方法创建了一个新类)。 问题是,如果在我使用 eclipse 更新“自行创建的文件”之前它不会工作。有没有办法让我的主文件更新“自己创建的文件”。

抱歉,如果这是重复的。我只是找不到它。

我的代码:

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();

}
}

最佳答案

你的主要错误是你期望它在运行时在保存后自动编译成 .class 文件(每次你按下 Ctrl 时,像 Eclipse 这样的理智的 IDE 会在幕后自动为你做+S)。因此,这是不正确的。运行时需要自己编译 JavaCompiler然后通过 URLClassLoader 加载.这个相关问题和答案中给出了一个具体示例:How do I programmatically compile and instantiate a Java class?

在具体示例中,您还会注意到您不能 new calculate(); 之后。类路径不会在运行时左右自动刷新。您需要执行 Class#forName(),传递 FQN 和 URLClassLoader。例如

Calculate calculate = (Calculate) Class.forName("com.example.Calculate", true, classLoader);

您的另一个错误是您依赖于磁盘文件系统的当前工作目录始终是 Eclipse 项目的源根文件夹。这不稳健。在构建和分发应用程序时,此文件夹根本不存在。您应该将文件写入 IDE 项目结构之外的其他位置的固定/绝对文件夹。这也包含在前面链接的答案中。

关于java - 如何让java使用最新版本的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960304/

相关文章:

eclipse - 如何更改 Eclipse 项目资源管理器中已更改文件的背景颜色?

java - eclipse ,错误 : The file does not exist

java - 如何使用 Docusign API 获取拒绝消息

java - 如何在java中执行复合sql查询?

java - 如何以页面/部分的形式最好地返回 SQL 结果

android - 开发建议 : Phonegap or Eclipse for Android

java - 谷歌 gson LinkedTreeMap 类转换为 myclass

java - Android Studio 创建 keystore 错误

Java hibernate eclipse bin 目录

java - 其他模块中 jar 依赖项的 IntelliJ NoClassDefFoundError