title: Accessing javax.smartcardio from Linux 64 bits
body: <p>I'm trying to load the smartcard terminals using the javax.smartcardio API with the following code:</p>
  
  <pre><code>public CardTerminal getReadyCardTerminal() throws CardException {
  
      TerminalFactory factory = TerminalFactory.getDefault();
      CardTerminals terminals = factory.terminals();
      List&lt;CardTerminal&gt; list = terminals.list(State.CARD_PRESENT);
  
      while (list.isEmpty()) {
          terminals.waitForChange(1000);
          list = terminals.list(State.CARD_PRESENT);
      }
      CardTerminal cardTerminal = list.get(0);
      return cardTerminal;
  }
  </code></pre>
  
  <p>... and I always get the following exception:</p>
  
  <pre><code>java.lang.IllegalStateException: no terminals
  at javax.smartcardio.TerminalFactory$NoneCardTerminals.waitForChange(TerminalFactory.java:145)
  </code></pre>
  
  <p>On Windows Vista/7 everything works fine, but I can't get it to work on Linux. I'm using Ubuntu 12.04 64 bits.</p>
  
  <p>I installed the pcscd service using the following command:</p>
  
  <pre><code>sudo apt-get install libccid pcscd libpcsclite-dev libpcsclite1
  sudo service pcscd start
  </code></pre>
  
  <p>And the pcsc_scan command prints this:</p>
  
  <pre><code>PC/SC device scanner
  V 1.4.18 (c) 2001-2011, Ludovic Rousseau &lt;ludovic.rousseau@free.fr&gt;
  Compiled with PC/SC lite version: 1.7.4
  Using reader plug'n play mechanism
  Scanning present readers...
  0: OMNIKEY CardMan 3x21 00 00
  
  Tue Sep 11 15:44:49 2012
  Reader 0: OMNIKEY CardMan 3x21 00 00
    Card state: Card inserted, 
    ATR: &lt;some hexa codes&gt;
    ...
  </code></pre>
  
  <p>So everything looks ok, but the smartcardio just doesn't work. I'm trying with both Oracle and OpenJDK 1.7.0_05, 32 and 64 bits.</p>
  
  <p>The code runs ok with OpenJDK (but not with Oracle JDK, don't know really why) on a Ubuntu 32 bits environment. So I think it is a problem with the 64 bits bridge from Java to the PC/SC library.</p>
  
  <p>Any ideas?</p>
  
  <p>Thanks.</p>