2013-09-29 69 views
0

我不知道爲什麼這是有運行時錯誤,我已經搜索了這個問題,它說在編譯時可用的類在運行時不再可用。java.lang.NoClassDefFoundError

這是代碼:

package examples.RMIShape; 
import java.rmi.*; 
import java.rmi.registry.LocateRegistry; 
import java.rmi.registry.Registry; 
//import java.rmi.server.UnicastRemoteObject; 

public class ShapeListServer { 
    public static void main(String args[]){ 
//  System.setSecurityManager(new RMISecurityManager()); 
     System.out.println("Main OK"); 
     try{ 
      ShapeList aShapelist = new ShapeListServant(); 
      System.out.println("After create"); 
      String registryURL = "rmi://localhost:" + "/ShapeList"; 
      startRegistry(); 
      Naming.rebind(registryURL, aShapelist); 
      System.out.println("ShapeList server ready"); 
     }catch(Exception e) { 
      System.out.println("ShapeList server main " + e.getMessage()); 
     } 
    } 

    // This method starts a RMI registry on the local host, if it 
    // does not already exists at the specified port number. 
    private static void startRegistry()throws RemoteException{ 
     Registry registry; 
     try { 
      registry = LocateRegistry.getRegistry(); 
      registry.list(); // This call will throw an exception 
      // if the registry does not already exist 
     } 
     catch (RemoteException e) { 
      // No valid registry at that port. 
      System.out.println ("RMI registry cannot be located at port " + Registry.REGISTRY_PORT); 
      registry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); 
      System.out.println("RMI registry created at port " + Registry.REGISTRY_PORT); 
     } 
    } // end startRegistry 
} 
+2

谷歌說得對,只需找到這些問題的答案,你應該很好。你是哪一類的錯誤?在哪個類中存在的jar?最後是你的類路徑中的jar嗎? –

+1

請發佈完整的錯誤消息,包括堆棧跟蹤;它也告訴你什麼類缺失。在運行程序時,必須確保該類在類路徑中。 – Jesper

回答

-1

Basicall java.lang.NoClassDefFoundError如果Java虛擬機或ClassLoader實例試圖在類的定義中加載拋出(作爲普通方法調用的一部分或作爲使用新表達式創建新實例的一部分)並且不能找到該類的定義。

以下鏈接將有所幫助。這個鏈接將指導你解決問題。

http://javarevisited.blogspot.in/2011/06/noclassdeffounderror-exception-in.html

http://javaeesupportpatterns.blogspot.in/2012/06/javalangnoclassdeffounderror-how-to.html

希望這將有助於

+0

您的引用都是錯誤的。 – EJP

+0

我不想與之爭論,但是我寫的東西是來自oracle java doc,你說過「我已經搜索了這個問題,它說在編譯時可用的類在運行時不再可用。」如果你去鏈接:http://javarevisited.blogspot.in/2011/06/noclassdeffounderror-exception-in.html,你將會「什麼是Java中的NoClassDefFoundError的原因」,他們明確地說「Java中的NoClassDefFoundError出現在Java Virtual機器在運行時無法找到一個在編譯期間可用的特定類「請看看。感謝您的評論 – Ganesh

+0

,我編輯了一些不正確的部分 – Ganesh

1

我用Google搜索這個問題,它說,在編譯期間是可利用的一類不再在運行時可用。

這是不正確的。這會導致ClassNotFoundException。這其中有幾個原因,但最常見的是文件中的類不是文件名和目錄層次所隱含的類。