Javac 不编译、缓存旧文件,也许吧?

标签 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

最佳答案

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

关于Javac 不编译、缓存旧文件,也许吧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30541353/

相关文章:

android - Cordova 将不再构建

java - 是否可以告诉-Werror在Java编译过程中忽略某个类或某个警告?

java - ScheduledExecutorService android 在启动时不工作

java - Spark 使用编码器创建数据集,其中 row 是数组类型

java - 使用JTable类时,JScrollPane的构造函数和它的add方法有什么区别?

java - 我无法使用 ormlite android 更新表

java - @FXML注入(inject)中的空指针异常

android-studio - Android工作室: Auto completion not working with ctrl + space

java - Intellij无法打开maven项目

c++ - 从 C++ 调用 Fortran 子例程,链接时 undefined reference