gpt4 book ai didi

java - 从 Linux 64 位访问 javax.smartcardio

转载 作者:IT老高 更新时间:2023-10-28 20:38:09 26 4
gpt4 key购买 nike

我正在尝试使用带有以下代码的 javax.smartcardio API 加载智能卡终端:

public CardTerminal getReadyCardTerminal() throws CardException {

TerminalFactory factory = TerminalFactory.getDefault();
CardTerminals terminals = factory.terminals();
List<CardTerminal> 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;
}

...我总是遇到以下异常:

java.lang.IllegalStateException: no terminals
at javax.smartcardio.TerminalFactory$NoneCardTerminals.waitForChange(TerminalFactory.java:145)

在 Windows Vista/7 上一切正常,但我无法让它在 Linux 上运行。我正在使用 Ubuntu 12.04 64 位。

我使用以下命令安装了 pcscd 服务:

sudo apt-get install libccid pcscd libpcsclite-dev libpcsclite1
sudo service pcscd start

而 pcsc_scan 命令会打印:

PC/SC device scanner
V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
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: <some hexa codes>
...

所以一切看起来都不错,但智能心脏无法正常工作。我正在尝试使用 Oracle 和 OpenJDK 1.7.0_05、32 和 64 位。

代码在 Ubuntu 32 位环境中使用 OpenJDK 运行正常(但不是使用 Oracle JDK,不知道为什么)。所以我认为这是从 Java 到 PC/SC 库的 64 位桥的问题。

有什么想法吗?

谢谢。

最佳答案

我想我找到了解决方法,因为我刚刚遇到了类似的问题。在 bugreport from ubuntu它说 javax.smartcardio 库在错误的目录中搜索 PC/SC 库。

通过在我的机器上指定 PC/SC 库的路径,就像错误报告中提到的那样,我让它工作了。

错误报告中的路径对我来说是错误的,我使用的是 64 位 Fedora,其中 pc/sc 库安装在/usr/lib64/libpcsclite.so.1

所以我的解决方法是像这样指定 java 的库路径:

java -Dsun.security.smartcardio.library=/usr/lib64/libpcsclite.so.1

根据您的 Linux 发行版,libpcsclite.so.1 的位置实际上可能不同,它也可能在 /lib/x86_64-linux-gnu/libpcsclite.so.1 (即 Kubuntu 15.04)。在这种情况下,这样调用它:

java -Dsun.security.smartcardio.library=/lib/x86_64-linux-gnu/libpcsclite.so.1

关于java - 从 Linux 64 位访问 javax.smartcardio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12376257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com