2015-12-24 81 views
0

我試圖創建一個簡單的程序,但當然JAVA認爲:否則不是那麼簡單。 我需要動態實例化一個類,這意味着用戶從鍵盤提供了一個類名,然後創建了具有該名稱的類類型的對象。 代碼:java.lang.ClassNotFoundException,PATH is corrent

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.lang.reflect.*; 

public class NimMain { 
    public static void main(String[] args) throws IOException { 
     BufferedReader Olvaso = new BufferedReader(new InputStreamReader(System.in)); 
     String be = Olvaso.readLine(); 
     String[] kapcsolo = be.split(" "); 

     switch (kapcsolo[0]) {  
      case "uj": uj(kapcsolo);  
      case "lep":   
      case "listaz": 
      case "ment": 
      case "tolt": 
     }} 


    public static void uj(String[] s) { 
     try { 
      int b = 2; 
      String nev = s[1]; 
      Class NimJatek = Class.forName(nev); 
      Constructor con = NimJatek.getConstructor(String[].class, int.class); 
      Object xyz = con.newInstance(s,b); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

從而未能實例化的類是NimJatek,它是在相同的目錄下,在相同(未命名)封裝。 當我嘗試運行這個程序時,它給出java.lang.ClassNotFoundException錯誤。

回答

0

我覺得你不是很清楚的構造讓你感到困惑。最後,使用輸入字符串的第二個值作爲類加載。如果你在那裏提供正確的字符串,它將被正確地包裝。輸入字符串:

"uj NimJatek" 

會導致正確地找到類NimJatek - 提供NimJatek是在你的根包,這根包在你的類路徑中。

+0

我是新來的Java和編程。您提供的輸入流是正確的,但這並不是我想要的。輸入字符串將是「uj WHATEVERNAME」,WHATEVERNAME將是NimJatek類的實例化,我該如何實現這一點? – user3420063

+0

作爲java的初學者,我建議您在使用自省之前先學習基礎知識。什麼是課堂?什麼是實例?什麼是繼承?什麼是類型?什麼是變量?什麼是常數?什麼是構造函數?什麼是包裹?什麼是類路徑?而且 - 最重要的是 - 這一切如何一起工作? – Heri

+0

我是用C++做的,在我學習的大學裏,JAVA是強制性的。到目前爲止,它已經是一塊****了。我想我明白爲什麼人們討厭JAVA。 – user3420063

相關問題