2016-05-22 43 views
0

error我遇到了一個麻煩約DatagramSocket的

DatagramSocket的DS =新的DatagramSocket(12345); //這裏,12345是端口

while (true) { 
     byte[] bys = new byte[1024]; 
     DatagramPacket dp = new DatagramPacket(bys, bys.length); 
     ds.receive(dp); 

     String ip = dp.getAddress().getHostAddress(); 
     String s = new String(dp.getData(), 0, dp.getLength()); 
     System.out.println("from " + ip + " data is : " + s); 
    } 

爲什麼呢?

+0

你似乎在那裏有一個破碎的JDK。你在運行什麼版本的Windows? –

+0

我的Windows版本是windows 8.1。我的JDK版本是8u73。 –

回答

0

您所得到的UnsatisfiedLinkException是說標準類庫中的方法存在缺少的本機代碼實現。這是一個「不應該發生」的問題。

事實上,您設法使您的代碼從NetBeans運行而不是Eclipse,這意味着Eclipse啓動程序配置等中的某些內容已損壞,而不是您正在使用的JDK。

  • 我會建議嘗試從命令行運行應用程序。

  • 要解決的問題的Eclipse:

    • 嘗試刪除並重新創建啓動配置,
    • 嘗試檢查所選擇的JRE是正確的,
    • 嘗試全新安裝Eclipse的。
+0

我得到我的代碼從命令行運行,這是可行的。
但您建議我通過刪除並重新創建啓動配置來修復Eclipse問題,但我沒有設置任何啓動配置。同時,你能否提供一些關於如何檢查選定JRE的方法是正確的。謝謝! –

0

如果你看看API,你的UnsatisfiedLinkException發生只有時:

當Java虛擬機無法找到一個方法的適當 本地語言定義時,拋出宣佈爲本地。

您需要查看您使用eclipse運行的是哪個JVM。你的代碼或eclipse本身不應該有問題。這只是一個JVM問題。它試圖通過你的系統找到一個方法實現,它只是沒有找到它。如果你在Windows上運行它可能是一個DLL相關的問題。也許你需要更新一些驅動程序或JVM,以便它支持當前在Windows中的實現。