我遇到一个很烦人的问题对我来说,我想象编译文件FooBar.java:Java编译器是使用旧版本的源代码
$ javac的FooBar.java
它编译sucefully然后我运行它像往常一样:
$ java的FooBar的< in.txt
我得到了预期的输出结果,如果我改变源代码(FooBar.java)来打印其他东西并重新编译,我会得到与第一次相同的输出!
这真的让我很生气......有没有javac的缓存?即使我删除FooBar.class并重新编译,我也会从早期的源代码中得到输出。我发现要解决这个问题的唯一方法是删除FooBar.java并创建一个名称不同的新文件(我只是复制代码),这是有效的。
这个错误(?)真的让我烦恼。我寻找解决方案或解释为什么发生这种情况,但没有运气。
这似乎是因为我没有使用任何IDE和类路径指向我的工作文件夹可能与我的问题,但不完全: http://www.coderanch.com/t/519372/java/java/Executing-Old-Code
我想找出是什么导致这是我不不想做一个新的文件,每次我更新的源代码...我在Windows上使用Java 1.6.0_27
感谢您的阅读...
您是如何编译的?您是否使用Eclipse之类的IDE?对不起,没有看到“我不使用IDE”。你用什么命令来编译?如果您删除.class文件,会发生什么情况? – km1 2012-08-16 00:56:48
正如我所说,我正在使用** javac **。如果我删除.class文件并重新编译,问题仍然存在......它会编译旧代码... – 2012-08-16 00:59:41
删除类文件,请勿编译并运行java命令。这将验证您运行的是与您认为的不同的类文件。 – km1 2012-08-16 01:02:22