Java中奇怪的区分大小写问题

Java中奇怪的区分大小写问题,java,jvm,java-7,case-sensitive,Java,Jvm,Java 7,Case Sensitive,当我尝试加载一个图像并将字母从小写改为大写或反之亦然时,图像在我使用的IDE中完美地显示出来(通过JDK1.7),但当我导出一个相同代码的可运行JAR以在JVM(1.7)上运行时,突然出现了区分大小写的问题,其中文件名必须精确 下面是示例代码: public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_C

当我尝试加载一个图像并将字母从小写改为大写或反之亦然时,图像在我使用的IDE中完美地显示出来(通过JDK1.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
似乎没有什么区别,图像以相同的方式显示

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


我的问题是,为什么在IDE内部运行和在IDE外部运行时不会发生同样的区分大小写的行为?

Java严格区分大小写,而OS(我猜
Windows
)文件系统则不是

本讨论将继续讨论发生这种情况的原因:


Java严格区分大小写,而操作系统(我猜是Windows)文件系统则不太区分大小写

本讨论将继续讨论发生这种情况的原因:



两者都运行在同一个操作系统上?这可能是jre的问题。您正在使用的netbeans可能会使用jdk附带的jre。当它作为jar文件导出时,您使用的是不同的jre。在Windows上有这么多jre/jdk.Yes@assylias版本是有原因的7@PeteBelford使用JDK和JVM 1.7 Update 25,这样就不能在同一个操作系统上运行issueBoth?这可能是jre的问题。您正在使用的netbeans可能会使用jdk附带的jre。当它作为jar文件导出时,您使用的是不同的jre。在Windows上有这么多jre/jdk.Yes@assylias版本是有原因的7@PeteBelford使用JDK和JVM 1.7 Update 25,因此如果两个测试都在同一个操作系统上运行,就不会出现问题,这并不能解释这种行为。@assylias这会解释为从
.jar
文件读取时区分大小写,而在Windows中读取文件时不区分大小写。@assylias如果文件嵌入到
.jar
文件中,
.jar
文件中的文件名区分大小写@UwePlonus ok,但在本例中,该文件未嵌入jar文件。@SammyGuergachi这不是NetBeans错误,也不是Javas错误。这是Windows故障,因为对于Windows,文件名中的大小写并不重要。我在Linux上开发Java程序,它区分大小写,从来没有出现过这样的问题。如果两个测试都在同一个操作系统上运行,这并不能解释这种行为。@assylias这会解释为从
.jar
文件读取时区分大小写,而在Windows中读取文件时不区分大小写。@assylias如果文件嵌入到
.jar
文件中,
.jar
文件中的文件名区分大小写@UwePlonus ok,但在本例中,该文件未嵌入jar文件。@SammyGuergachi这不是NetBeans错误,也不是Javas错误。这是Windows故障,因为对于Windows,文件名中的大小写并不重要。我在Linux上开发Java程序,它区分大小写,从来没有出现过这样的问题。