从 android nfc 中的 NFC Type B (ISO 14443-3B) 读取数据;获取 NoClassDefFoundError

发布于 2024-11-18 21:04:55 字数 678 浏览 5 评论 0原文

我想使用 Samsung Nexus S 的 NFC 功能从 NfcB 型卡读取数据。 我能够识别该卡。但是当我尝试使用 get 获取 NfcB 对象时:

Tag tg=(Tag)nfcTag;
NfcB myTag = NfcB.get(tg);

我收到此错误:

ERROR/AndroidRuntime(808): java.lang.NoClassDefFoundError: android.nfc.tech.NfcB

如果使用此方法,我也会收到错误:

Parcelable nfcTag = intent.getParcelableExtra("android.nfc.extra.TAG");
Tag tag= (Tag)nfcTag;
tag.getTechList()

ERROR /AndroidRuntime(2498): java.lang.NoSuchMethodError: android.nfc.Tag.getTechList

项目构建正确,但在运行时我得到这些 错误。 如果我能解决错误,我将能够读取数据。我熟悉 APDU 命令,但无法创建 NfcB 对象或 IsoDep 对象。通过这个 api,其他一切都可以正常工作。

谁能告诉我代码是否有问题或者我需要使用其他方法或api。

提前致谢

I want to read data from an NfcB type card using the NFC feature of Samsung Nexus S.
I am able to recognize the card. But when I try to get an object of NfcB using get:

Tag tg=(Tag)nfcTag;
NfcB myTag = NfcB.get(tg);

I get this error:

ERROR/AndroidRuntime(808): java.lang.NoClassDefFoundError: android.nfc.tech.NfcB

Also I get an error if I use this method:

Parcelable nfcTag = intent.getParcelableExtra("android.nfc.extra.TAG");
Tag tag= (Tag)nfcTag;
tag.getTechList()

ERROR/AndroidRuntime(2498): java.lang.NoSuchMethodError: android.nfc.Tag.getTechList

The project builds correctly but at run time I get these error.
If I can resolve the error I will be able to read the data. I am familiar with the APDU commands but I am not able to create the NfcB object or IsoDep object. Everything else works fine from this api.

Can anybody tell me if there is something wrong with the code or I need to use some other methods or api.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故笙诉离歌 2024-11-25 21:04:55

来自 javadocs 的 java.lang.NoClassDefFoundError:

如果 Java 虚拟机或 ClassLoader 实例尝试加载类的定义(作为正常方法调用的一部分或作为使用 new 表达式创建新实例的一部分),则抛出此错误)并且找不到该类的定义。

听起来好像找不到您的类。检查类是否属于 jar 并且 jar 未添加到类路径中。

还可以尝试在 Android 清单文件中设置权限。
请参阅此处

java.lang.NoClassDefFoundError from javadocs:

Thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found.

Sounds like it can't find your class. Check if class belongs to a jar and jar was not added into classpath.

Also try to set permissions in the Android manifest file.
See here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文