2011-03-20 153 views
0

嘗試打開錢箱時出現以下錯誤。在Java中打開端口時出錯

Error loading win32com: java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jdk1.6.0_15\jre\bin\win32com.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform

我使用的代碼如下

import javax.comm.*; 
import java.util.*;  
/** Check each port to see if it is open. **/ 
public class openPort { 

    public static void main (String [] args) { 
     Enumeration port_list = CommPortIdentifier.getPortIdentifiers(); 

     while (port_list.hasMoreElements()) { 
      // Get the list of ports 
      CommPortIdentifier port_id = 
        (CommPortIdentifier) port_list.nextElement(); 

      // Find each ports type and name 
      if (port_id.getPortType() == CommPortIdentifier.PORT_SERIAL) 
      { 
       System.out.println ("Serial port: " + port_id.getName()); 
      } 
      else if (port_id.getPortType() == CommPortIdentifier.PORT_PARALLEL) 
      { 
       System.out.println ("Parallel port: " + port_id.getName()); 
      } else 
       System.out.println ("Other port: " + port_id.getName()); 

      // Attempt to open it 
      try { 
       CommPort port = port_id.open ("PortListOpen",20); 
       System.out.println (" Opened successfully"); 
       port.close(); 
      } 
      catch (PortInUseException pe) 
      { 
       System.out.println (" Open failed"); 
       String owner_name = port_id.getCurrentOwner(); 
       if (owner_name == null) 
        System.out.println (" Port Owned by unidentified app"); 
       else 
        // The owner name not returned correctly unless it is 
        // a Java program. 
        System.out.println (" " + owner_name); 
      } 
    } 
    } //main 
} // PortListOpen 

回答

2

如前所述,您正在使用的Java Communications API(2.0,不是當前可用於Windows的3.0版本)適用於Windows 32位,所以win32com.dll必須與32位JRE/JDK一起使用,而不是64位JRE/JDK。嘗試使用JDK 1.6.0_15 32位版本。

3

這個錯誤清楚地說,你的DLL是32位。 JVM也應該是32位。

1

好像您在64位平臺上使用32位JDK。試試64位JDK!或者如果可用,請安裝API的64位版本。

+0

我有NetBeans在此版本的JDK上工作。如果我現在將其更改爲64位,會不會有任何問題?我應該刪除Java,並應重新安裝我的儀式?如果我安裝64位JDK,我正在開發的應用程序可以在所有平臺上工作嗎? – Deepak 2011-03-20 16:12:23

+1

考慮到安裝了正確的comm api,您的應用程序將在所有平臺和JDK上運行時沒有問題。通常,我建議留在32位Java上,因爲它在64位Windows版本上速度更快,但似乎Comm API使用本地DLL,所以在64位Windows上,似乎需要64位JDK和Comm API,並且在32位窗戶的32位通訊API。去嘗試一下。對於IDE而言,它不起作用,您還可以使用IDE的32位JVM和64位JDK從IDE運行程序。 – Daniel 2011-03-20 16:15:21

+0

我不想改變我的JVM版本。有沒有其他方法可以解決這個問題? – Deepak 2011-03-20 16:16:35