javax.smartcardio.* 在 Open JDK 11(Redhat) 上找不到
javax.smartcardio.* is not found on Open JDK 11(Redhat)
我正在使用 Redhat 的 OpenJDK 11 与 Windows 上的智能卡通信。但是我在编译时遇到了问题。它说找不到 javax.smartcardio 库。
Enviornment : Redhat OpenJDK 11, Intellij, Kotlin, Gradle
> Task :compileKotlin
e: ~\util\SmartCard.kt: (7, 14): Unresolved reference: smartcardio
e: ~\util\SmartCard.kt: (13, 25): Unresolved reference: CardTerminal
e: ~\util\SmartCard.kt: (13, 41): Unresolved reference: TerminalFactory
e: ~\util\SmartCard.kt: (19, 51): Unresolved reference: CardTerminal
e: ~\util\SmartCard.kt: (25, 43): Unresolved reference: CardTerminal
e: ~\util\SmartCard.kt: (35, 23): Unresolved reference: Card
e: ~\util\SmartCard.kt: (36, 30): Unresolved reference: CardChannel
e: ~\util\SmartCard.kt: (44, 52): Unresolved reference: CardException
e: ~\util\SmartCard.kt: (51, 19): Unresolved reference: CardException
e: ~\util\SmartCard.kt: (54, 27): Unresolved reference: CommandAPDU
此外,我已经查看了类路径,并且有 'java.smartcardio' 我在下面附上了屏幕截图。
我该怎么办?
添加----------------
有线的东西在 Java 代码中,它在同一个项目上工作。我认为Kotllin环境设置有问题
我认为您需要将 java.smartcard 模块包含到使用您列出的未解析 类 的代码所在的模块中。
我在 se.ivankrizsan 包中使用以下代码创建了一个名为 kotlinsmartcard 的小型 Kotlin 项目:
fun main() {
val theCardTerminal: CardTerminal;
println("Hello World!")
}
在不在任何包中的源根目录中,我有一个名为 module-info.java 的文件,其内容如下:
module kotlinsmartcard {
requires kotlin.stdlib;
requires java.smartcardio;
}
我可以使用 JDK 11.0.3-zulu 运行 上面的程序(使用它是因为我手头没有 RedHat JDK)。
这样我的整个 kotlinsmartcard 项目就是一个模块,以尽量减少对 Java 模块系统的暴露,但我仍然需要 "requires java.smartcardio" 以免在变量声明时出错在代码中。
这是另一种方法。我只是放弃使用 JDK 的智能卡 类,因为 JDK 很难在 JDK 11 版本上使用。取而代之的是,我使用了 Github.
中的一个库
在这里。
我正在使用 Redhat 的 OpenJDK 11 与 Windows 上的智能卡通信。但是我在编译时遇到了问题。它说找不到 javax.smartcardio 库。
Enviornment : Redhat OpenJDK 11, Intellij, Kotlin, Gradle
> Task :compileKotlin
e: ~\util\SmartCard.kt: (7, 14): Unresolved reference: smartcardio
e: ~\util\SmartCard.kt: (13, 25): Unresolved reference: CardTerminal
e: ~\util\SmartCard.kt: (13, 41): Unresolved reference: TerminalFactory
e: ~\util\SmartCard.kt: (19, 51): Unresolved reference: CardTerminal
e: ~\util\SmartCard.kt: (25, 43): Unresolved reference: CardTerminal
e: ~\util\SmartCard.kt: (35, 23): Unresolved reference: Card
e: ~\util\SmartCard.kt: (36, 30): Unresolved reference: CardChannel
e: ~\util\SmartCard.kt: (44, 52): Unresolved reference: CardException
e: ~\util\SmartCard.kt: (51, 19): Unresolved reference: CardException
e: ~\util\SmartCard.kt: (54, 27): Unresolved reference: CommandAPDU
此外,我已经查看了类路径,并且有 'java.smartcardio' 我在下面附上了屏幕截图。
我该怎么办?
添加----------------
有线的东西在 Java 代码中,它在同一个项目上工作。我认为Kotllin环境设置有问题
我认为您需要将 java.smartcard 模块包含到使用您列出的未解析 类 的代码所在的模块中。 我在 se.ivankrizsan 包中使用以下代码创建了一个名为 kotlinsmartcard 的小型 Kotlin 项目:
fun main() {
val theCardTerminal: CardTerminal;
println("Hello World!")
}
在不在任何包中的源根目录中,我有一个名为 module-info.java 的文件,其内容如下:
module kotlinsmartcard {
requires kotlin.stdlib;
requires java.smartcardio;
}
我可以使用 JDK 11.0.3-zulu 运行 上面的程序(使用它是因为我手头没有 RedHat JDK)。 这样我的整个 kotlinsmartcard 项目就是一个模块,以尽量减少对 Java 模块系统的暴露,但我仍然需要 "requires java.smartcardio" 以免在变量声明时出错在代码中。
这是另一种方法。我只是放弃使用 JDK 的智能卡 类,因为 JDK 很难在 JDK 11 版本上使用。取而代之的是,我使用了 Github.
中的一个库在这里。