【问题标题】:Programmatically refreshing a file in an eclipse Java application以编程方式刷新 Eclipse Java 应用程序中的文件
【发布时间】:2016-09-30 06:37:21
【问题描述】:

我有以下程序,它在运行时向自身添加一个方法。但我每次都必须使用 F5 按钮或刷新选项刷新它。 有没有办法可以在程序本身中编写刷新代码,以便在修改后自行刷新?我正在处理的项目是 Java 应用程序,而不是 Eclipse 插件,据我所知,无法使用 refreshLocal() 方法。

public class Demo {
public static void main(String[] args) throws IOException, CoreException {
    File file = new File("/home/kishan/workspace/Roast/src/Demo.java");

    if (file.exists()) {
        JavaClassSource javaClass = Roaster.parse(JavaClassSource.class,
                file);
        javaClass.addMethod().setPublic().setStatic(true)
                .setName("newMethod").setReturnTypeVoid()
                .setBody("System.out.println(\"newMethod created\");")
                .addParameter("String[]", "stringArray");
        FileWriter writer = new FileWriter(file);
        writer.write(javaClass.toString());
        writer.flush();
        writer.close();

    }

}
}

我尝试使用 eclipse JDT 中定义的 refreshLocal() 方法,但由于我的项目是 Java 应用程序,因此 ResourcePlugin.getWorkspace() 方法不起作用,给我一个“工作区关闭”错误。
任何建议都是赞赏。

【问题讨论】:

  • 您正在编辑的 .java 文件不是它编译和运行的 .class 文件。
  • @ChiefTwoPencils 你想暗示什么?
  • @ChiefTwoPencils 也许他想在eclipse中点击“运行”;然后想看看eclipse里面添加的方法……不用再按F5了。换句话说:运行类应该导致 Eclipse 刷新它的源视图。
  • @GhostCat 这正是我想做的。

标签: java eclipse


【解决方案1】:

你看,eclipse 在它自己的专用 JVM 中运行你的 Java 类。因此,没有直接的编程方式在 eclipse 中强制执行 refresh

你可以查看这个旧的question;也许这可能会导致合理的解决方法。

另一方面,您可能会退后一步,问自己为什么要实现这一目标。您的工作流程在查看时根本没有多大意义。如:以这种方式生成代码时,生成的代码不应该更好地放在自己的特定位置吗?

如果你打算频繁“生成”代码然后继续在eclipse中使用它;嗯,这在某种程度上闻起来就像一个奇怪的想法。

【讨论】:

【解决方案2】:

Eclipse 有“使用本机挂钩或轮询刷新”可能会有所帮助。 您可以在 Window > Prefrences > General > Workspace 下找到它。
On Eclipse, what does "Preferences -> General -> Workspace -> Refresh using native hooks or polling" do?

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 2017-01-16
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多