clase ELF incorrecta: ELFCLASS32 (Causa posible: falta de coincidencia de ancho de palabra de la arquitectura)

Tengo esta extraña excepción que dice la clase ELF incorrecta, pero la envoltura está configurada correctamente.

Para leer la tarjeta de identificación de Belgiun usando este SDK del sitio oficial de los emisores de tarjetas de identificación de belgiun:http://eid.belgium.be/en/binaries/beid-sdk-3.5.3-ubuntu-9.10-i686-6193_tcm147-94066_tcm406-114986.tgz

$ uname -a # Using NetBeans IDE 7.3 in Ubuntu 12.10 64-bit
Linux sun-M14xR2 3.5.0-25-generic #39-Ubuntu SMP Mon Feb 25 18:26:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ java -version
java version "1.7.0_15"
OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7-0ubuntu1~12.10.1)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

Código:

package javaapplication1;

import java.lang.*;
import be.belgium.eid.*;

public class JavaApplication1 {
  //*****************************************************************************
  // Get the data and dump to the screen
  // Beware: The data coming from the cards is encoded in UTF8!
  //*****************************************************************************

  private static void getSISData(BEID_SISCard card) throws Exception {
    BEID_SisId sisId = card.getID();

    System.out.println();

    System.out.println("\tPeronal data:");
    System.out.println("\t-------------");
    System.out.println("\tName                 : " + sisId.getName());
    System.out.println("\tSurname              : " + sisId.getSurname());
    System.out.println("\tInitials             : " + sisId.getInitials());
    System.out.println("\tGender               : " + sisId.getGender());
    System.out.println("\tDateOfBirth          : " + sisId.getDateOfBirth());
    System.out.println("\tSocialSecurityNumber : " + sisId.getSocialSecurityNumber());

    System.out.println();

    System.out.println("\tCard data:");
    System.out.println("\t----------");
    System.out.println("\tLogicalNumber        : " + sisId.getLogicalNumber());
    System.out.println("\tDateOfIssue          : " + sisId.getDateOfIssue());
    System.out.println("\tValidityBeginDate    : " + sisId.getValidityBeginDate());
    System.out.println("\tValidityEndDate      : " + sisId.getValidityEndDate());
  }

  //*****************************************************************************
  // Get the data from a Belgian SIS card
  //*****************************************************************************
  private static void getSISCardData(BEID_ReaderContext readerContext) throws Exception {
    BEID_SISCard card = readerContext.getSISCard();
    getSISData(card);
  }

  //*****************************************************************************
  // Get the data and dump to the screen
  // Beware: The data coming from the cards is encoded in UTF8!
  //*****************************************************************************
  private static void getEIDData(BEID_EIDCard card) throws Exception {
    BEID_EId eid = card.getID();

    if (card.isTestCard()) {
      card.setAllowTestCard(true);
      System.out.println("");
      System.out.println("Warning: This is a test card.");
    }

    System.out.println("\tDocumentVersion    : " + eid.getDocumentVersion());
    System.out.println("\tDocumentType       : " + eid.getDocumentType());

    System.out.println();

    System.out.println("\tPeronal data:");
    System.out.println("\t-------------");
    System.out.println("\tFirstName          : " + eid.getFirstName());
    System.out.println("\tSurname            : " + eid.getSurname());
    System.out.println("\tGender             : " + eid.getGender());
    System.out.println("\tDateOfBirth        : " + eid.getDateOfBirth());
    System.out.println("\tLocationOfBirth    : " + eid.getLocationOfBirth());
    System.out.println("\tNobility           : " + eid.getNobility());
    System.out.println("\tNationality        : " + eid.getNationality());
    System.out.println("\tNationalNumber     : " + eid.getNationalNumber());
    System.out.println("\tSpecialOrganization: " + eid.getSpecialOrganization());
    System.out.println("\tMemberOfFamily     : " + eid.getMemberOfFamily());
    System.out.println("\tAddressVersion     : " + eid.getAddressVersion());
    System.out.println("\tStreet             : " + eid.getStreet());
    System.out.println("\tZipCode            : " + eid.getZipCode());
    System.out.println("\tMunicipality       : " + eid.getMunicipality());
    System.out.println("\tCountry            : " + eid.getCountry());
    System.out.println("\tSpecialStatus      : " + eid.getSpecialStatus());

    System.out.println("");

    System.out.println("\tCard data:");
    System.out.println("\t----------");
    System.out.println("\tLogicalNumber      : " + eid.getLogicalNumber());
    System.out.println("\tChipNumber         : " + eid.getChipNumber());
    System.out.println("\tValidityBeginDate  : " + eid.getValidityBeginDate());
    System.out.println("\tValidityEndDate    : " + eid.getValidityEndDate());
    System.out.println("\tIssuingMunicipality: " + eid.getIssuingMunicipality());
  }

  //*****************************************************************************
  // Get the data from a Belgian kids EID card
  //*****************************************************************************
  private static void getKidsCardData(BEID_ReaderContext readerContext) throws Exception {
    BEID_KidsCard card = readerContext.getKidsCard();
    getEIDData(card);
  }

  //*****************************************************************************
  // Get the data from a Belgian foreigner EID card
  //*****************************************************************************
  private static void getForeignerCardData(BEID_ReaderContext readerContext) throws Exception {
    BEID_ForeignerCard card = readerContext.getForeignerCard();
    getEIDData(card);
  }

  //*****************************************************************************
  // Get the data from a Belgian EID card
  //*****************************************************************************
  private static void getEidCardData(BEID_ReaderContext readerContext) throws Exception {
    BEID_EIDCard card = readerContext.getEIDCard();
    getEIDData(card);
  }

  //*****************************************************************************
  // get a string representation of the card type
  //*****************************************************************************
  private static String getCardTypeStr(BEID_ReaderContext readerContext) throws Exception {
    String strCardType = "UNKNOWN";
    BEID_CardType cardType = readerContext.getCardType();

    if (cardType == BEID_CardType.BEID_CARDTYPE_EID) {
      strCardType = "BEID_CARDTYPE_EID";
    } else if (cardType == BEID_CardType.BEID_CARDTYPE_KIDS) {
      strCardType = "BEID_CARDTYPE_KIDS";
    } else if (cardType == BEID_CardType.BEID_CARDTYPE_FOREIGNER) {
      strCardType = "BEID_CARDTYPE_FOREIGNER";
    } else if (cardType == BEID_CardType.BEID_CARDTYPE_SIS) {
      strCardType = "BEID_CARDTYPE_SIS";
    } else {
      strCardType = "BEID_CARDTYPE_UNKNOWN";
    }
    return strCardType;
  }

  //*****************************************************************************
  // Show the info of the card in the reader
  //*****************************************************************************
  private static void showCardInfo(String readerName) throws Exception {
    BEID_ReaderContext readerContext = BEID_ReaderSet.instance().getReaderByName(readerName);
    if (readerContext.isCardPresent()) {
      System.out.println("\tType               : " + getCardTypeStr(readerContext));

      BEID_CardType cardType = readerContext.getCardType();

      if (cardType == BEID_CardType.BEID_CARDTYPE_EID) {
        getEidCardData(readerContext);
      } else if (cardType == BEID_CardType.BEID_CARDTYPE_KIDS) {
        getKidsCardData(readerContext);
      } else if (cardType == BEID_CardType.BEID_CARDTYPE_FOREIGNER) {
        getForeignerCardData(readerContext);
      } else if (cardType == BEID_CardType.BEID_CARDTYPE_SIS) {
        getSISCardData(readerContext);
      } else {
      }
    }
  }

  //*****************************************************************************
  // Show the reader info an get the data of the card if present
  //*****************************************************************************
  private static void showReaderCardInfo(String readerName) throws Exception {
    BEID_ReaderContext readerContext = BEID_ReaderSet.instance().getReaderByName(readerName);

    System.out.println("Reader: " + readerName);
    System.out.println("\tCard present: " + (readerContext.isCardPresent() ? "yes" : "no"));

    showCardInfo(readerName);

    System.out.println("");
  }

  //*****************************************************************************
  // scan all the card readers and if a card is present, show the content of the
  // card.
  //*****************************************************************************
  private static void scanReaders() throws Exception {
    long nrReaders = BEID_ReaderSet.instance().readerCount();
    System.out.println("Nr of card readers detected: " + nrReaders);

    for (int readerIdx = 0; readerIdx < nrReaders; readerIdx++) {
      String readerName = BEID_ReaderSet.instance().getReaderName(readerIdx);
      showReaderCardInfo(readerName);
    }
  }

  //*****************************************************************************
  // Main entry point
  //*****************************************************************************
  public static void main(String argv[]) {
    System.out.println("[Info]  eID SDK sample program: read_eid");

    String osName = System.getProperty("os.name");

    if (-1 != osName.indexOf("Windows")) {
      System.out.println("[Info]  Windows system!!");
      System.loadLibrary("beid35libJava_Wrapper");
    } else {
      System.loadLibrary("beidlibJava_Wrapper");
    }

    try {
      BEID_ReaderSet.initSDK();
      scanReaders();
    } catch (BEID_Exception e) {
      System.out.println("[Catch] BEID_Exception:" + e.GetError());
    } catch (Exception e) {
      System.out.println("[Catch] Exception:" + e.getMessage());
    }


    try {
      BEID_ReaderSet.releaseSDK();
    } catch (BEID_Exception e) {
      System.out.println("[Catch] BEID_Exception:" + e.GetError());
    } catch (Exception e) {
      System.out.println("[Catch] Exception:" + e.getMessage());
    }
  }
}

Salida:

[Info]  eID SDK sample program: read_eid
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/sun/Downloads/beidsdk/beidlib/Java/unsigned/libbeidlibJava_Wrapper.so.3.5.3: /home/sun/Downloads/beidsdk/beidlib/Java/unsigned/libbeidlibJava_Wrapper.so.3.5.3: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675)
    at java.lang.Runtime.loadLibrary0(Runtime.java:840)
    at java.lang.System.loadLibrary(System.java:1047)
    at javaapplication1.JavaApplication1.main(JavaApplication1.java:269)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

EDITAR:

https://code.google.com/p/eid-viewer/ https://code.google.com/p/eid-mw/

Respuestas a la pregunta(1)

Su respuesta a la pregunta