Hi all, I encountered to following error message when trying to run the 
"TestSim.class" program. What causes this error and how to go around it?

THanks to all,
Boon
===============================================================
java.lang.UnsatisfiedLinkError: no OCFPCSC1 in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1312)
        at java.lang.Runtime.loadLibrary0(Runtime.java:749)
        at java.lang.System.loadLibrary(System.java:820)
        at opencard.core.util.SystemAccess.loadLibrary(SystemAccess.java:111)
        at com.ibm.opencard.terminal.pcsc10.OCFPCSC1.loadLib(OCFPCSC1.java:64)
        at 
com.ibm.opencard.terminal.pcsc10.Pcsc10CardTerminalFactory.open(Pcsc10CardTerminalFactory.java:94)
        at 
com.ibm.opencard.terminal.pcsc10.Pcsc10CardTerminalFactory.<init>(Pcsc10CardTerminalFactory.java:65)
        at java.lang.Class.newInstance0(Native Method)
        at java.lang.Class.newInstance(Class.java:237)
        at 
opencard.core.service.SmartCard.handleTerminalFactoryEntries(SmartCard.java:424)
        at 
opencard.core.service.SmartCard.configureTerminalRegistry(SmartCard.java:261)
        at opencard.core.service.SmartCard.start(SmartCard.java:534)
        at SimTest.main(SimTest.java:68)

========================================================================
/*
  * Copyright � 1998 Gemplus SCA
  * Av. du Pic de Bertagne - Parc d'Activit�s de G�menos
  * BP 100 - 13881 G�menos CEDEX
  *
  * "Code derived from the original OpenCard Framework".
  *
  * Everyone is allowed to redistribute and use this source  (source
  * code)  and binary (object code),  with or  without modification,
  * under some conditions:
  *
  *  - Everyone  must  retain  and/or  reproduce the above copyright
  *    notice,  and the below  disclaimer of warranty and limitation
  *    of liability  for redistribution and use of these source code
  *    and object code.
  *
  *  - Everyone  must  ask a  specific prior written permission from
  *    Gemplus to use the name of Gemplus.
  *
  * DISCLAIMER OF WARRANTY
  *
  * THIS CODE IS PROVIDED "AS IS",  WITHOUT ANY WARRANTY OF ANY KIND
  * (INCLUDING,  BUT  NOT  LIMITED  TO,  THE IMPLIED  WARRANTIES  OF
  * MERCHANTABILITY  AND FITNESS FOR  A  PARTICULAR PURPOSE)  EITHER
  * EXPRESS OR IMPLIED.  GEMPLUS DOES NOT WARRANT THAT THE FUNCTIONS
  * CONTAINED  IN THIS SOFTWARE WILL MEET THE USER'S REQUIREMENTS OR
  * THAT THE OPERATION OF IT WILL BE UNINTERRUPTED OR ERROR-FREE. NO
  * USE  OF  ANY  CODE  IS  AUTHORIZED  HEREUNDER EXCEPT UNDER  THIS
  * DISCLAIMER.
  *
  * LIMITATION OF LIABILITY
  *
  * GEMPLUS SHALL NOT BE LIABLE FOR INFRINGEMENTS OF  THIRD  PARTIES
  * RIGHTS. IN NO EVENTS, UNLESS REQUIRED BY APPLICABLE  LAW,  SHALL
  * GEMPLUS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER  INCLUDING,
  * WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE,
  * COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
  * LOSSES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ALSO,
  * GEMPLUS IS  UNDER NO  OBLIGATION TO MAINTAIN,  CORRECT,  UPDATE,
  * CHANGE, MODIFY, OR OTHERWISE SUPPORT THIS SOFTWARE.
  */

import opencard.core.terminal.*;
import opencard.core.util.*;
import opencard.core.service.*;
import opencard.opt.util.*;

/**
  * A sample that demonstrates the access to a smard card,
  * obtains a <tt>CardID</tt> object which represents an ATR,
  * then send a SIM-card information request APDU (i.e., <tt>STATUS</tt>)
  *
  * @author  Christophe Muller ([EMAIL PROTECTED])
  * @version $Id: SimTest.java,v 1.0 1999/11/29 16:56:48 root Exp root $
  **/

public class SimTest {

     public static void main (String [] args) {

     System.out.println ("----------------------------------------------");
     System.out.println ("Test of OCF with a SIM card");
     System.out.println ("");

     try {
         // Initialize the framework
         SmartCard.start ();

         CardRequest cr = new CardRequest ();
         cr.setWaitBehavior (CardRequest.ANYCARD);
         SmartCard sm = SmartCard.waitForCard (cr);

         // print the ATR (from demos.samples.GetCardID)
         if (sm != null) {
         CardID cardID = sm.getCardID ();
         printCardID (cardID);
         } else {
         System.out.println ("did not get a SmartCard object!");
         }

         // Get a PassThru card service and perform a 'STATUS' command
         PassThruCardService cs = (PassThruCardService)
         sm.getCardService(PassThruCardService.class, true);

         CommandAPDU cmd = new CommandAPDU(22);
         cmd.setLength(0);
         cmd.append((byte) 0xa0);
         cmd.append((byte) 0xf2);
         cmd.append((byte) 0x00);
         cmd.append((byte) 0x00);
         cmd.append((byte) 0x16);

         System.out.println("Command 'STATUS':");
         System.out.println(cmd.toString());

         System.out.println("Sending a 'STATUS' command to the card...");
         ResponseAPDU resp = cs.sendCommandAPDU(cmd);
         System.out.println("Response to 'STATUS' command:");
         System.out.println(resp.toString());

         // Shutdown the framework
         SmartCard.shutdown ();
     }
     catch (OpenCardPropertyLoadingException plfe) {
         System.out.println ("OpenCardPropertyLoadingException: ");
         System.out.println (plfe.getMessage () );
     }
     catch (ClassNotFoundException cnfe) {
         System.out.println ("ClassNotFoundException: ");
         System.out.println (cnfe.getMessage () );
     }
     catch (CardServiceException cse) {
         System.out.println ("CardServiceException: ");
         System.out.println (cse.getMessage () );
     }
     catch (CardTerminalException cte) {
         System.out.println ("CardTerminalException: ");
         System.out.println (cte.getMessage () );
     }

     System.out.println ("");
     System.out.println ("----------------------------------------------");
     }


     /**
      * Prints out the information of the <tt>CardID</tt> object passed.
      */
     public static void printCardID (CardID cardID) {
     StringBuffer sb = new StringBuffer("Obtained the following 
CardID:\n\n");

     byte [] atr = cardID.getATR ();
     sb.append (HexString.hexify (atr) ).append ('\n');

     appendHistoricals (sb, cardID);

     System.out.println(sb);
     }


     private static void appendHistoricals(StringBuffer sb, CardID cardID) {
     byte[] hist = cardID.getHistoricals();

     sb.append("Historicals: ");
     if (hist == null) {
         sb.append("none\n");
     } else {
         sb.append(HexString.hexify(hist)).append('\n');
         sb.append("as a string: ");
         for(int i=0; i<hist.length; i++)
         sb.append((hist[i]<32)? // signed byte extension!
               ' ' : (char)hist[i]);
         sb.append('\n');
     }
     }


     private static void appendTS(StringBuffer sb, byte ts) {
     sb.append("TS = ").append(HexString.hexify(ts)).append("    ");
     sb.append((ts==(byte)0x3b) ? "direct" : "inverse").append(" 
convention\n");
     }


     private static void appendT0(StringBuffer sb, byte t0) {
     sb.append("TS = ").append(HexString.hexify(t0)).append("    ");
     binify(sb, t0);
     sb.append('\n');
     }


     private static void appendClockrate(StringBuffer sb, byte cr) {
     double[] mhz  = { -1.0, 5.0, 6.0, 8.0, 12.0, 16.0, 20.0, -1.0,
               5.0, 7.5, 10.0, 15.0, 20.0, -1.0, -1.0, -1.0 };
     int[] factors = { -2, 372, 558, 744, 1116, 1488, 1860, -1,
               512, 768, 1024, 1536, 2048, -1, -1, -1 };

     int fi = (cr >> 4) & 0xf;

     double speed =   mhz  [fi];
     int   factor = factors[fi];

     sb.append("Clock speed ");
     if (speed < 0)
         sb.append("???");
     else
         sb.append(speed);

     sb.append(" MHz, divided by ");
     if (factor < 0)
         sb.append("???");
     else
         sb.append(factor);
     sb.append('\n');
     }


     private static void appendBitAdjust(StringBuffer sb, byte b) {
     double[] bra = { -1.0, 1.0, 2.0, 4.0, 8.0, 16.0, 32.0, -1.0,
              12.0, 20.0, 1.0/2, 1.0/4, 1.0/8, 1.0/16, 1.0/32, 1.0/64 };
     int di = b & 0xf;

     sb.append("bit rate adjustment ");
     if (bra[di] < 0)
         sb.append("???");
     else
         sb.append(bra[di]);
     sb.append('\n');
     }


     private static void appendProgCurr(StringBuffer sb, byte b) {
     int[] mpg = { 25, 50, 100, -1 };
     int ii = (b >> 5) & 3;

     sb.append("max prog current ");
     if (b < 0)
         sb.append("???");
     else
         sb.append(mpg[ii]).append(" mA");
     sb.append('\n');
     }


     private static void binify(StringBuffer sb, byte b) {
     for(int i=0; i<8; i++) {
         sb.append((b<0) ? '1' : '0');
         b <<= 1;
     }
     }

}


_________________________________________________________________
MSN Photos is the easiest way to share and print your photos: 
http://photos.msn.com/support/worldwide.aspx


---
> Visit the OpenCard web site at http://www.opencard.org/ for more
> information on OpenCard---binaries, source code, documents.
> This list is being archived at http://www.opencard.org/archive/opencard/

! To unsubscribe from the [EMAIL PROTECTED] mailing list send an email
! to
!                           [EMAIL PROTECTED]
! containing the word
!                           unsubscribe 
! in the body.

Reply via email to