2013-10-09 27 views
0

我得到這個真的(愚蠢)錯誤從Java快速修復的Class.forName情況下問題

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: models/modelclass (wrong name: models/ModelClass) 

所以我在命令行中鍵入的命令,我寧願不鍵入正確的情況下,班級名稱。我想輸入「modelclass」而不是「ModelClass」。

有沒有辦法解決這個問題?爲什麼這個例外存在?!?

+1

爲什麼你不想輸入正確的大小寫? –

+0

爲什麼要用首都輸入? –

+2

一種類型,大寫的首都是適當的。 onedoesnotignorepunctuationrulesjustbecauseonewantsto。 –

回答

4

由於標準Java類加載器對類名稱區分大小寫,因此存在該錯誤。

三個選項:

  1. 忽略標準的Java約定和名稱的所有類小寫(不推薦,而不是可能的,如果你正在尋找一個第三方類)。
  2. 使用Google's Reflections Library查找類路徑中的類,對給定輸入執行不區分大小寫的匹配,並使用您在Class.forName()調用中從反射中找到的類。
  3. 迭代#2:編寫自己的類加載器,對類進行不區分大小寫的搜索並加載所需的類。
+1

不要鼓勵行爲:-) –

+1

我認爲有一個有效的用例用於對類名進行不區分大小寫的搜索(當我的IDE執行此操作時,我喜歡它),但是您正確地跳過Java類命名約定是不是一個好主意。 – lreeder

+0

好吧,我的問題是,爲什麼標準Java類加載器對類名稱區分大小寫?可能有一個很好的理由,我只是好奇。 –