[英]Java compiler is using old version of source code
我遇到一个非常烦人的问题,假设我编译了文件FooBar.java:
$ javac FooBar.java
它会成功编译,然后像往常一样运行它:
$ java FooBar <in.txt
我得到的输出与预期的一样,要解决的是,如果我将源代码(FooBar.java)更改为打印其他内容并再次进行编译,则将获得与第一次相同的输出!
这真的让我发狂... javac是否有任何缓存? 即使删除FooBar.class并重新编译,我也会从早期的源代码中获取输出。 我发现解决此问题的唯一方法是删除FooBar.java并创建一个具有不同名称的新文件(我只是复制粘贴了代码),这可行。
这个错误(?)确实困扰着我。 我一直在寻找解决方案或解释,以了解为什么会发生这种情况,但是没有运气。
这似乎与我的问题有关,但并不完全相关,因为我没有使用任何IDE,并且Classpath指向我的工作文件夹: http : //www.coderanch.com/t/519372/java/java/Executing-Old-Code
我想找出是什么原因造成的,因为我不想每次更新源代码时都创建新文件...我在Windows上使用Java 1.6.0_27
谢谢阅读...
有包裹声明吗? 自第一次编译它以来,您可能已经放入了一个包声明。 如果您具有foo.bar软件包,则编译器将在foo / bar / FooBar.class中创建.class文件,并且应使用java foo.bar.FooBar
运行它。 如果没有包,它将创建./FooBar.class并通过java FooBar
运行它。
问题不会被缓存。 尝试这个:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.