2013-07-11 55 views
2

當我嘗試加載圖像並將字母從低位更改爲大寫(反之亦然)時,圖像在我使用的IDE(通過JDK 1.7)中完美顯示,但是當我導出可運行在JVM(1.7)上運行的相同代碼的JAR突然間存在區分大小寫問題,其中文件名必須精確。Java中奇怪的區分大小寫問題

下面是示例代碼:

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時,圖像不會顯示,除非文件名正確。

我的問題是爲什麼在IDE內運行時以及在外部運行時發生的大小寫不敏感的行爲?

+0

在同一操作系統上運行兩個? – assylias

+0

這可能是一個問題。您使用的netbeans可能會使用jdk附帶的jre。當它作爲jar文件導出時,您使用的是不同的jre。爲什麼jre/jdk的發佈太多是有原因的。 –

+0

Windows 7上是@assylias –

回答

4

Java是嚴格區分大小寫的,而操作系統(我猜Windows)文件系統很多都沒有。

這種討論越過如出現這種情況:

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

+0

如果兩個測試都在同一個操作系統上運行,那不會解釋行爲。 – assylias

+0

@assylias這可以解釋爲從'.jar'文件讀取區分大小寫,而在Windows中讀取文件不是。 –

+0

@UwePlonus文件名稱位於硬盤驅動器中,不在jar中。不知道我明白你的意思。 – assylias