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

标签 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);
}

改变app_Background.pngapp_background.png当我在 Netbeans 中运行它时,似乎没有什么区别,图像以相同的方式显示。

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

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

最佳答案

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

此讨论的重点是为什么会发生这种情况:

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

关于java - Java 中奇怪的区分大小写问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17594615/

相关文章:

java - Spring MVC - 跨 Controller 的继承变量值

java - 用 Scala 隐式包装的 Java 接口(interface)实现的工厂方法?

Java url.openConnection()

java - 将未导出/未打开的包添加到模块信息的 ModulePackages 的用例是什么?

安装了 Java SE 7,但不支持开关中的字符串

java - 为什么要收集文字?

java - 如何仅使用 JDK 注入(inject)属性文件?

java - Play框架使用Apache Commons发送电子邮件

java - hibernate 组合键

java - Kotlin:符号在模块 'jdk.internal.opt' 中声明,该模块不导出包 'jdk.internal.joptsimple.internal'