2015-05-30 35 views
3

Windows 7 x64Javac不编译,缓存旧文件,也许?

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

基本上我试图在最近重新格式化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 
+0

删除类文件并重试。 – sabbir

+0

现在做了这么多次 –

+0

将源文件移动到另一个文件夹并在那里尝试。当删除课程时,请尝试移动+删除。 – sabbir

回答

2

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

+0

Yeahp它确实。我甚至没有想到那个谢谢你! –