Javax.SmartCardIO - 未找到 TerminalFactory 重新插入的设备

Posted

技术标签:

【中文标题】Javax.SmartCardIO - 未找到 TerminalFactory 重新插入的设备【英文标题】:Javax.SmartCardIO - TerminalFactory replugged device not found 【发布时间】:2016-01-22 22:09:31 【问题描述】:

我的程序有点问题。 第一次插入阅读器一切正常,程序找到阅读器,但是在程序中我断开阅读器,然后重新插入,然后再次运行搜索,程序无法找到读者。我只有 CardException 和消息:list() failed

有人知道怎么解决吗?

    TerminalFactory factory = TerminalFactory.getDefault();
    System.out.println(factory);
    List<CardTerminal> terminals = new ArrayList<CardTerminal>();
    if (factory == null) 
        return terminals;
    
    try 
        terminals = factory.terminals().list();
     catch (CardException e) 
        System.out.println(e.getMessage());
    

我也试过这个:

    try 
        factory = TerminalFactory.getInstance("PC/SC", null, new jnasmartcardio.Smartcardio());
     catch (NoSuchAlgorithmException e1) 
        e1.printStackTrace();
    

谢谢帮助。

【问题讨论】:

见***.com/questions/16921785/… 【参考方案1】:

在不知道如何使用代码的 sn-p 的情况下,请阅读 jnasmartcardio 和上下文的生命周期。在最后一个读取器断开连接后,Windows 会终止资源管理器(从而使句柄无效)。

【讨论】:

我在睡眠循环中执行 1500 毫秒。是否有可能在不使用 jnasmartcardio 的情况下以某种方式解决这个问题?它仅在 Windows 10、Windows 8.1 和 Windows 8 上发生。如何手动重置对象 TerminalFactory 以获取连接到计算机的设备的新列表?

以上是关于Javax.SmartCardIO - 未找到 TerminalFactory 重新插入的设备的主要内容,如果未能解决你的问题,请参考以下文章

带有 Java 9 和 ClassPath 的 javax.smartcardio

javax.smartcardio 读取所有智能卡

在 Open JDK 11(Redhat)上找不到 javax.smartcardio.*

使用 javax.smartcardio 读取 NFC Mifare Ultralight 卡

如何使用 RFID 读卡器 (javax.smartcardio) 识别德国身份证?

getATR() 不会在 javax.smartcardio 中重置智能卡