获取OS X内智能卡列表的任何解决方案?

时间:2014-06-29 22:29:21

标签: java macos applet smartcard

我正在实现一个applet,它从用户那里获取一些信息,包括你的名字, 是系统管理员,机器架构以及更多的证书和智能卡插件列表,所有这些都是为了检查另一个小程序的先决条件。

在Windows中一切都运行良好,但我在MAC(OS X Lion Mountain)中获取智能卡信息时遇到问题,可能是由此错误导致的:Bug DB:- JDK-7195480 : javax.smartcardio does not detect cards on Mac OS X

我找到了以下可能的解决方案(我认为):

  1. 使用另一个没有https://github.com/intarsys/smartcard-io
  2. 错误的库
  3. 我看了这些讨论:
  4. 对于第一种情况,我将lib的问题编译为版本7,我需要它到版本6, 我没有成功编译为6,额外的JAR是大(+ - 4MB)。

    对于第二种情况,显然这在Windows上不起作用(docs oracle javase 6 docs technotes指南javaws developersguide语法) 并且显然有一些限制......

    有没有人知道另一个lib(在Java 6中)获取智能卡信息? 我只需要读者姓名,卡名和ATR。

    或者有人会知道从Applet强制JVM的方法(简单方法)?

    请尽量澄清,因为我是Java的初学者!

1 个答案:

答案 0 :(得分:1)

  

..或者有人会知道从Applet强制JVM的方法(简单方法)?

我们不能真正“强迫”用户做任何事情(不是我们应该做的),但是通过使用Java Web Start启动applet,我们可以请求特定版本的JRE。这是一个破败。

Java Web Start - 运行时版本控制

Java Web Start可用于确保应用程序 获得JRE的某个最低版本 它需要运行的(Java运行时环境)。 Web启动也可用于确保具体 微型版的JRE 可用于应用程序,或者 早期主要发布 (例如,在安装了1.6的系统上使用1.3)。

除非系统配置正确,否则用户可能是 提示下载。

最低版本

Java Web start可用于确保启动Java项目 使用特定的最低版本的Java。例如,如果是应用程序 使用泛型,但没有超出Java 1.5中可用的内容 JNLP部署描述符可能包含一个表示..

的部分
..
<resources>
    <j2se version='1.5+'>
...
</resources>

微型版

除了能够指定最低Java Major版本之外,还有 部署者还可以授权特定的微版本。一个例子 这可能是方便的,可能会在JRE的变化中看到 关于夏令时的新信息(可以更改) 当地政府随时都认为需要改变它们。)

..
<resources>
    <j2se version='1.5.0_11'>
...
</resources>

早期版本

Web start有一个方便的功能,它可以让我们 测试特定早期Java版本的应用程序。 例如,如果本地构建环境基于1.6, 但应用程序应该是1.5+,测试它是值得的 部署前1.5 JRE的最终产品。调用1.5 1.6环境中的JRE可以简单到。

..
<resources>
    <j2se version='1.5'>
...
</resources>

注意第一个例子的区别,它使用了'1.5+', 而这一个使用'1.5' - 表示只有1.5 JRE会这样做。

替代版本..

..
<resources>
    <j2se version='1.5*'>
...
</resources>

提示下载

部署应用程序的人员通常报告的问题 通过网站启动,是他们被提示下载版本 已经在本地安装的Java。

即使是特定的Java 版本已安装,可能不会被标记为“可用” 供web start使用。 这很容易解决。

打开 Java控制面板

<img src="jcp-javaapplication.gif">

选择 Java 标签,然后点击查看 Java应用程序运行时设置的按钮。 你可能会看到这样的东西。

<img src="jcp-javaruntimesettings.gif">

请注意哪些已启用(右列)。这台电脑是 设置使用 1.6.01.5.0_11,或 1.5.0_08。两者都没有 1.5.0-beta1.5.0_01微版本可用。 这纯粹是我的选择 - 如果我需要对这些进行测试 非常早期的1.5版本,我可以根据需要简单地启用它们。

确保所有感兴趣的版本已启用以及问题 应该修复。 Web start将能够加载该版本的 JRE并使用它,没有任何下载提示。

如果您安装的版本没有 在用户列表中显示,点击查找 启动 JRE Finder 寻找他们。 (Java 1.6)JRE Finder会 在这些行中显示一个带有消息的对话框。

  

为了启动应用程序,Java Web Start需要知道   已安装的Java运行时环境的位置。

     

您可以选择已知的JRE,也可以选择目录   从中搜索JRE的文件系统。

thread on the web start forum也产生了以下评论 来自安迪·赫里克。

  

在Windows上,填充了可用JRE的列表   包含所有公开指针的注册表   安装了JRE。   (它不会自动包含私人JRE,例如   那些由JDK安装安装的,“安装公共JRE”   未被选中。)。

     

在unix上,默认情况下,它只包含   它带来的JRE和任何由java web start或者安装的   任何以前版本的java web start都带来了   以前一直在运行。

他补充说明了指定下载源..

  

使用:

<j2se version="1.5*" href="http://java.sun.com/products/autodl/j2se">
  

<j2se version="1.5" >
  

将为您提供系统上可用的任何1.5版本。

     

如果使用href属性,则要求提供特定的更新版本,所以..

<j2se version="1.5" href="http://java.sun.com/products/autodl/j2se">
  

..仅适用于1.5.0_00