首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果API-jar有此方法和实现,为什么抛出NoSuchMethodError异常?

如果API-jar有此方法和实现,为什么抛出NoSuchMethodError异常?
EN

Stack Overflow用户
提问于 2012-11-06 15:58:52
回答 1查看 360关注 0票数 0
代码语言:javascript
运行
复制
File f = new File(fullPath);            
long freeSpace = f.getFreeSpace();

我在android应用程序中使用上面的片段。我的应用程序编译的很好,用SDK-15JAR。

我运行这个应用程序的android手机是Froyo。

我在运行时得到以下错误

代码语言:javascript
运行
复制
      java.lang.NoSuchMethodError: java.io.File.getFreeSpace

我查找了getFreeSpace()的文档,它说是从API-9开始的。据我所知,froyo符合API-8 (以及上面,我猜?)所以我知道(但不太明白),我不能在platform上调用这个函数,但是我可以在API-8之上的平台上调用它。

,所以我的问题/模棱两可是

考虑到应用程序编译得非常好,我假设函数f.getFreeSpace()及其实现在我正在使用的API-15的jar中是可用的。当我的应用程序使用API-15的jar文件编译并且应该在jar中实现getFreeSpace()时,android为什么会抛出一个运行时异常?如果API-15 jar中有实现,那么平台Froyo - API-8为什么会产生问题呢??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-06 16:55:23

我假设函数f.getFreeSpace()及其实现在我正在使用的API-15的jar中可用。

“API-15的罐子”不是你想的那样。

在编译时,您所针对的JAR不是APK的一部分。它是一系列存根类和方法,足以让编译继续进行。这些类和方法的真正实现是在设备的固件中。

当我的应用程序使用API-15的jar文件编译并且应该在jar中实现getFreeSpace()时,android为什么会抛出一个运行时异常?

您可以在编译时使用getFreeSpace(),使用编译瓷砖JAR。您将不会在运行时在API 8设备上使用getFreeSpace(),因为该方法不存在于该版本的Android中。

如果API-15 jar中有实现,那么平台Froyo - API-8为什么会产生问题呢??

因为您认为"API-15 jar“只在编译时使用,而不是在运行时使用。

过去在Android开发者网站上有更多关于这方面的资料,但在2012年早些时候的重新设计中,它似乎已经丢失了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13254749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档