对于您的口味来说,这可能太 hacky,但是您可以在 Java 源代码中插入一个静态初始化片段,以便在重新加载后更新一个已知的单独文件。比 livereload 可以观察那个单独的文件,而不是让它直接在.java
源上工作。
类似于以下内容:
public class ReloadUtils {
public static void notifyUpdate(String className) {
String baseDir = System.getProperty("DEV_MODE_BASEDIR") + "/";
File file = new File(baseDir + className + ".updated");
FileWriter fw = new FileWriter(file.getAbsoluteFile(), false); // overwrite instead of append
BufferedWriter bw = new BufferedWriter(fw);
bw.write(Long.toString(System.currentTimeMillis()));
bw.close();
}
}
public class Reloadable {
private final static boolean DEV_MODE = System.getProperty("DEV_MODE").equals("true");
static {
// static finals trigger most compilers to remove the statements in this case
if (DEV_MODE) {
ReloadUtils.notifyUpdate(Reloadable.class.getName());
}
}
/* lots of useful stuff */
}