Java中奇怪的案例敏感问题

时间:2013-07-11 13:24:58

标签: java jvm java-7 case-sensitive

当我尝试加载图像并将字母从大写字母更改为大写字母时,反之亦然,图像在我使用的IDE中完美显示(通过JDK 1.7)但是当我导出相同代码的可运行JAR时在JVM(1.7)上运行突然出现了一个区分大小写的问题,其中文件名必须准确。

以下是示例代码:

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);

    JLabel im = new JLabel(new ImageIcon("C:\\Users\\Sammy\\Documents\\Aurora\\Onix 2 original\\app_Background.png"));
    frame.add(im);

    frame.setVisible(true);
}

当我在Netbeans中运行时,将app_Background.png更改为app_background.png似乎没有任何区别,图像以相同的方式显示。

但是,当我通过命令提示符从JVM运行代码或只运行可运行的JAR时,除非文件名正确,否则图像不会显示。

我的问题是为什么在IDE内部运行时以及在一个IDE外部运行时,是否发生了相同的区分大小写行为?

1 个答案:

答案 0 :(得分:4)

Java严格区分大小写,而操作系统(我猜Windows)文件系统很多都没有。

这个讨论可以解释为什么会发生这种情况:

https://netbeans.org/bugzilla/show_bug.cgi?id=198946