Ошибка при открытии порта в Java - PullRequest
0 голосов
/ 20 марта 2011

Я получаю следующую ошибку при попытке открыть денежный ящик.

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

Ответы [ 3 ]

3 голосов
/ 20 марта 2011

Ошибка ясно говорит о том, что ваша DLL является 32-битной. JVM также должна быть 32-битной.

2 голосов
/ 20 марта 2011

Как указывалось ранее, Java Communications API , который вы используете (2.0, не актуальный 3.0, который не доступен для Windows), предназначен для Windows 32bit, поэтому win32com.dll должен использоваться с 32bitJRE / JDK, а не 64-битная JRE / JDK.Попробуйте использовать 32-битную версию JDK 1.6.0_15.

1 голос
/ 20 марта 2011

Похоже, вы используете 32-битный JDK на 64-битной платформе. Попробуйте 64-битный JDK! Или, если доступно, установите 64-битную версию API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...