Javac可能没有编译,缓存旧文件,可能吗?

时间:2015-05-30 01:41:56

标签: java intellij-idea compilation

Windows 7 x64

我知道问题描述不好,但很难解释。

基本上我在最近重新格式化Windows并重新安装java和所有爵士乐后,试图对IntelliJ中的旧程序进行一些调整。无论我在程序中改变了什么,输出都没有改变。我注释或改变了什么并不重要。

所以经过一些挫折之后,我决定做一些基础测试,以确保我不会失去理智。我创建了一个全新的目录。在该目录中我创建了一个文件(使用Sublime Text,而不是IntelliJ)。你的经典" Hello World"程序

public class FrequencyCounter {
    public static void main(String args[]) {
        System.out.println("Hello World");
    }
}

这是目录中唯一的文件。然

javac FrequencyCounter.java

似乎编译正常,没有错误,在目录中生成了一个FrequencyCounter.class文件。然

java FrequencyCounter

得到了这个错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at FrequencyCounter.main(FrequencyCounter.java:50)

显然,这没有任何意义。它不是在该目录中运行FrequencyCounter类,而是在其他地方运行一些较旧的缓存类。出于理智的考虑,我复制了文件,但将其更改为HelloWorld.javapublic class HelloWorld { ..... },编译并运行正常(在同一目录中)。

如果有帮助:

D:\Copy\Code\Learning\CS\IntelliJ\test>java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

D:\Copy\Code\Learning\CS\IntelliJ\test>javac -version
javac 1.7.0_07

1 个答案:

答案 0 :(得分:2)

假设你告诉我们的是正确的,它正在从其他地方运行一个FrequencyCounter类。最可能的事情是你的类路径被设置为已经有一个FrequencyCounter类的目录或jar,并且它正在运行它。