2013-04-24 17 views
8

Yanlış ELF sınıfı söyleyerek bu garip bir özel durum var ama sarmalayıcı doğru şekilde ayarlanmış. http://eid.belgium.be/en/binaries/beid-sdk-3.5.3-ubuntu-9.10-i686-6193_tcm147-94066_tcm406-114986.tgz<a1> yanlış</ a1> ELF sınıfı: ELFCLASS32 (Olası nedeni: mimari kelime genişliği uyumsuzluğu)

$ 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) 

Kodu:

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()); 
    } 
    } 
} 

Çıktı:

[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) 

DÜZENLEME:

Belgiun kimlik kartı veren kuruluşlara resmi sitesini bu SDK'yı kullanarak Belgiun kimlik kartı okumak için

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

cevap

15

Eğer Java 64 bit sürümünü kullanıyorsanız, çünkü çalışmaz ve kullanmak için çalışıyoruz SDK 32-bit yerel kitaplığı (libbeidlibJava_Wrapper.so.3.5.3) içerir . 64 bit JRE, 32 bit yerel kitaplıkları yükleyemez.

Java'nın 32 bit sürümünü kullanmanız veya 64 bit yerel kitaplıklara sahip SDK sürümünü bulmanız gerekir.

+0

Teşekkür ederim. Bu aynı PC'de, çift Java'yı 64-bit olarak ve diğeri 32-bit'i çalıştırmak için manuel olarak çalıştırmam gerekiyor. Çünkü diğer uygulamalarım sadece 64 bit java ile çalışmak üzere tasarlanmış olan aynı bilgisayarda çalışıyorlar. Sadece bu modül 32 bit gerektirir ve SDK tedarikçisi 64 bit kitaplığa sahip değildir. – YumYumYum