有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有什么解决方案可以在OS X中获取智能卡列表吗?

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

在Windows中,所有这些都可以完美地工作,但我在MAC(OS X Lion Mountain)中获取智能卡信息时遇到了问题,这可能是由以下错误引起的:Bug DB:- JDK-7195480 : javax.smartcardio does not detect cards on Mac OS X

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

  1. 使用另一个没有bug的库https://github.com/intarsys/smartcard-io
  2. 我看了这些讨论:

对于第一种情况,我的问题是lib被编译到版本7,我需要它到版本6, 我没有成功编译for 6,额外的jar太大了(+-4MB)

对于第二种情况,显然这在Windows上不起作用(docs oracle javase 6 docs technotes Guide javaws developerGuide语法) 而且也有一些局限性

有人知道另一个库(Java 6)来获取智能卡信息吗? 我只需要读卡器名、卡名和ATR

或者有人知道如何从Applet强制JVM(简单方法)

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


共 (1) 个答案

  1. # 1 楼答案

    ..Or someone would know a way to force the JVM from a Applet (simple method)?

    我们不能真正“强迫”用户做任何事情(不是我们应该做的),但是通过使用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部署描述符可能包含一个部分,其中说

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

    微版本

    除了能够指定最低的Java主版本之外 deployer还可以指定特定的微型版本。一个例子 这在哪些方面很方便,可以从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>
    

    提示下载

    部署应用程序的人员经常报告的问题 通过web start,他们会被提示下载版本 已经在本地安装的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 搜索它们。(Java1.6)JRE Finder将 展示一个对话框,其中包含以下内容的信息

    In order to launch applications, Java Web Start needs to know the locations of installed Java Runtime Environments.

    You can either select a known JRE, or select a directory in the file system from which to search for JREs.

    A thread on the web start forum还发表了以下评论 安迪·赫里克

    On Windows, the list of available JRE's is populated from the registry which contains pointers to all the publicly installed JRE's. (It will not automatically include private JRE's, such as those installed by a JDK install, where "install public JRE" is not selected.).

    On unix it will only, by default, contain the JRE it came with and any installed by java web start or that came with any previous version of java web start that had previously been run.

    他补充了关于指定下载源的进一步说明

    Using either:

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

    or

    <j2se version="1.5" >
    

    will get you any 1.5 version available on the system.

    If you use the href attribute, you are asking for the particular update release, so..

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

    ..will only work with 1.5.0_00.