问题:
使用JAVA CARD技术获取NFC读卡器,读卡器连接时可以正常读卡,读卡器拔出后,再次插上,这时再进行读卡报错SCARD_E_SERVICE_STOPPED,提示找不到资源
TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();
CardTerminal cardTerminal = terminals.get(0);
cardTerminal.waitForCardAbsent(0);
通过跟踪,错误信息:
2023/04/24 15:05:41 ERROR [] javax.smartcardio.CardException: waitForCard() failed
at sun.security.smartcardio.TerminalImpl.waitForCard(TerminalImpl.java:130)
at sun.security.smartcardio.TerminalImpl.waitForCardPresent(TerminalImpl.java:136)
at com.digiwin.athena.edge.cardreader.CardReaderService.waitForCardPresent(CardReaderService.java:82)
at com.digiwin.athena.edge.core.EdgeService.waitForCardPresent(EdgeService.java:41)
at com.digiwin.athena.edge.cardreader.runner.CardEventRunner.run(CardEventRunner.java:39)
at java.lang.Thread.run(Thread.java:748)
Caused by: sun.security.smartcardio.PCSCException: SCARD_E_SERVICE_STOPPED
at sun.security.smartcardio.PCSC.SCardGetStatusChange(Native Method)
at sun.security.smartcardio.TerminalImpl.waitForCard(TerminalImpl.java:110)
... 5 more
如果我想通过程序实现,拔出后,再次插入读卡器,且不用重启服务的方式,可以读到卡
用什么方式可以实现
在使用JAVA CARD技术获取NFC读卡器时,可能会出现某些系统资源未正常释放导致出现该错误。
建议您可以使用以下方法:
1.尝试重新启动NFC服务,在命令行输入“net stop scardsvr”停止服务,然后再输入“net start scardsvr”启动服务。
2.尝试重新安装驱动程序或重装整个系统。
3.检查设备管理器中的设备状态,可以尝试更新驱动程序来解决。
4.尝试升级JAVA CARD SDK版本,以保证JAVA卡片能够正常与读卡器交互。
如果以上方法都没有帮助解决问题,建议您联系相关技术人员或厂商支持。