This directory is the starter workspace for Java Card applet development.
Checked on this machine:
- OS: macOS 26.3 (Apple Silicon)
- Installed:
opensc,pcsc-lite,opensc-tool,pcsc_scan,python3,node,npm - Missing for Java Card applet dev:
java,javac,ant,gp(GlobalPlatformPro) JAVA_HOME: not set- Reader check:
pcsc_scanreturnedNo reader found - Java Card SDK downloaded and extracted at:
tools/sdk-2.2.2
kf/javacard-applet/
build.xml
README.md
src/com/example/jc/HelloApplet.java
scripts/check_env.sh
scripts/install_notes_template.md
docs/
build/
# If Rosetta is not installed yet (needed by temurin@8 on Apple Silicon)
softwareupdate --install-rosetta --agree-to-license
# Install Java 8
brew install --cask temurin@8
# Install Ant
brew install antHomebrew does not provide an official globalplatformpro package.
Use one of these methods:
- Download
gp.jarfrom GlobalPlatformPro releases, then create a wrapper script namedgpin your PATH. - Keep
gp.jarin a tools directory and runjava -jar /path/to/gp.jar ....
Example wrapper script (/usr/local/bin/gp):
#!/usr/bin/env bash
exec java -jar "$HOME/tools/globalplatformpro/gp.jar" "$@"Make it executable:
chmod +x /usr/local/bin/gpJava Card SDK typically needs manual download due to licensing/distribution. You already downloaded and extracted SDK 2.2.2 into this project:
kf/javacard-applet/tools/sdk-2.2.2Optional: export JC_HOME explicitly (recommended):
export JC_HOME="/Users/sunm15/Documents/VScode/kf/javacard-applet/tools/sdk-2.2.2"Or source helper script:
source kf/javacard-applet/scripts/use_local_sdk.shAdd this to your shell rc file (~/.zshrc) if needed.
cd /Users/sunm15/Documents/VScode/kf/javacard-applet
export JC_HOME="/Users/sunm15/Documents/VScode/kf/javacard-applet/tools/sdk-2.2.2"
./scripts/check_env.sh ant check-env
ant clean ant compile ant package-cap
ls -l build/cap/com/example/jc/javacard/jc.cap
# 1) 查看现状(当时已看到同 AID applet/package)
# gp -l
# 2) 删除旧 applet 实例
# gp -delete A00000006203010C0101
# 3) 删除旧 package
# gp -delete A00000006203010C01
gp -install build/cap/com/example/jc/javacard/jc.cap
gp -l
gp -a 00A404000AA00000006203010C0101 -a 8010000000
cd kf/javacard-applet
chmod +x scripts/check_env.sh
./scripts/check_env.shExpected: java, ant, gp available and JC_HOME set.
Current sample applet: src/com/example/jc/HelloApplet.java
Try:
cd kf/javacard-applet
ant check-env
ant compile
ant package-capNote:
build.xmlnow defaults totools/sdk-2.2.2ifJC_HOMEis not set.- For Java Card 2.2.2, classpath uses
${JC_HOME}/lib/api.jar. ant package-capgenerates CAP/EXP/JCA output inbuild/cap/.
- SELECT applet by AID
- Send
CLA=0x80, INS=0x10 - Expect response payload:
Hello, JavaCard!
- Finish Step A/B/C installations.
- Confirm reader appears in
pcsc_scan. - Install
gpwrapper and add CAP loading script. - Load CAP to card and verify APDU response.
- Start implementing your real applet logic.