java有什么解决方案可以在OS X中获取智能卡列表吗?
我正在实现一个小程序,从用户那里获取一些信息,包括你的名字, 是系统管理员、机器架构和更多证书和智能卡插入列表,所有这些都是为了检查另一个小程序的先决条件
在Windows中,所有这些都可以完美地工作,但我在MAC(OS X Lion Mountain)中获取智能卡信息时遇到了问题,这可能是由以下错误引起的:Bug DB:- JDK-7195480 : javax.smartcardio does not detect cards on Mac OS X
我发现了以下可能的解决方案(我认为):
- 使用另一个没有bug的库https://github.com/intarsys/smartcard-io
- 我看了这些讨论:
对于第一种情况,我的问题是lib被编译到版本7,我需要它到版本6, 我没有成功编译for 6,额外的jar太大了(+-4MB)
对于第二种情况,显然这在Windows上不起作用(docs oracle javase 6 docs technotes Guide javaws developerGuide语法) 而且也有一些局限性
有人知道另一个库(Java 6)来获取智能卡信息吗? 我只需要读卡器名、卡名和ATR
或者有人知道如何从Applet强制JVM(简单方法)
请尽量澄清,因为我是Java初学者
# 1 楼答案
我们不能真正“强迫”用户做任何事情(不是我们应该做的),但是通过使用Java Web Start启动applet,我们可以请求特定版本的JRE。这是一份简况
Java Web Start-运行时版本控制
Java Web Start可用于确保应用程序 获得一定的JRE最低版本 (Java运行时环境)运行所需的。 Web start还可用于确保特定的 JRE的微型版 对应用程序可用,或 早期的主要版本 使用(例如,在安装了1.6的系统上使用1.3)
除非系统配置正确,否则用户可能会 提示下载
最低版本
Java web start可用于确保启动Java项目 使用特定的Java最低版本。例如,如果应用程序 使用泛型,但除了Java 1.5中提供的功能之外,没有其他功能 JNLP部署描述符可能包含一个部分,其中说
微版本
除了能够指定最低的Java主版本之外 deployer还可以指定特定的微型版本。一个例子 这在哪些方面很方便,可以从JRE基于 关于夏令时的新信息(可以更改) 地区政府认为有必要随时改变它们)
早期版本
Web start有一个方便的功能,它可以让我们 针对特定的早期Java版本测试应用程序。 例如,如果本地构建环境基于1.6左右, 但应用程序应该是1.5+,测试 最终产品在部署前在1.5 JRE中。调用1.5 1.6环境中的JRE可以简单到
请注意第一个例子的不同之处,它使用了“1.5+”, 而这个用“1.5”表示只有1.5 JRE就行了
另一个版本
提示下载
部署应用程序的人员经常报告的问题 通过web start,他们会被提示下载版本 已经在本地安装的Java
即使一个特定的Java 版本已安装,可能未标记为“可用” 供web start使用。 这很容易解决
打开Java控制面板
选择Java选项卡,然后单击视图 Java应用程序运行时设置按钮。 你可能会看到这样的情况
请注意哪些已启用(右栏)。这台电脑是 设置为使用
1.6.0
,1.5.0_11
,或1.5.0_08
。两个1.5.0-beta
或1.5.0_01
可提供微型版本。 这完全是我的选择——如果我需要测试这些 在早期的1.5版本中,我可以根据需要简单地启用它们确保所有感兴趣的版本都已启用,并解决问题 应该修复。Web start将能够加载该版本的 JRE并使用它,无需任何下载提示
如果您安装了不支持的版本 在用户列表中出现,单击查找以 启动JRE Finder 搜索它们。(Java1.6)JRE Finder将 展示一个对话框,其中包含以下内容的信息
A thread on the web start forum还发表了以下评论 安迪·赫里克
他补充了关于指定下载源的进一步说明