Eclipse中出现空指针异常,提示“Running Android Lint”常量失败(但似乎不是我的代码)

29
我不记得我更新了什么(可能是一些Android ADK项目),但突然间我在Eclipse中经常收到一个“Problem Occurred”文本框。它显示:
“Running Android Lint”遇到问题。 失败
有一个OK和一个Details按钮。当我点击Details时,我得到:
失败 java.lang.NullPointerException
从文本框中,我无法确定是什么出了问题……听起来像是Lint运行本身失败了,并且由于NPE而失败了。没有任何代码的任何行号与之相关联,所以我不认为问题出在我的代码上。
我尝试了禁用运行Lint和其他所有内容……但是勾选“Runs Android Lint”的复选框只会导致Lint运行,从而弹出消息框警告。它似乎确实在运行,因为底部会出现几个Lint警告。但它似乎仍在告诉我Lint本身出现了NPE……我不知道该在哪里修复它。
我在Windows Home Premium 64位中运行Eclipse SDK 3.7.2,使用JDK 6(最近卸载了JDK 7并安装了6)。

这个 Android 弹出窗口真的很讨厌。 - kpsfoo
@kpsfoo 这不仅仅是一个“麻烦”。它告诉你的工作空间已经损坏。如果你愿意,可以忽略这样的异常,但不要期望有积极的结果... - arkon
可能是重复的问题:如何解决这个“运行Android Lint”问题 - arkon
8个回答

33

这是由ADT 23.0.2版本的一个漏洞引起的,可以在此问题中注意到:https://code.google.com/p/android/issues/detail?id=73002

升级到23.0.3版后,问题得到了解决。

  1. 启动Eclipse
  2. 转到 帮助->安装新软件
  3. 从下拉菜单中选择“Android开发工具更新站点- https://dl.google.com/android/eclipse/”(如果没有,请通过单击添加并粘贴名称和URL来添加它)
  4. 在软件包列表中选中开发人员工具包(展开它并确保所有子软件包都已选中)
  5. 为避免安装时出现错误,请取消选中“在安装期间联系所有更新站点以查找所需软件”
  6. 单击下一步,接受许可证,再次单击下一步
  7. 安装完成后,请重新启动Eclipse。

1
很遗憾,“检查更新”菜单项找不到更新。很高兴知道有一个解决方法。 - Edward Brey

15

Window > Preferences > Android > Lint Error Checking;中,取消勾选“保存文件时检查错误”。


我的Eclipse没有保存文件的lint错误检查... :( - Shridutt Kothari
11
忽略错误并不是我所说的解决方案。 - arkon
6
@b1nary.atr0phy说:"我认为 '忽略一个你无法控制的不真正是错误的错误,而是在明显未准备投产的第三方代码中出现的错误,该代码应该扫描潜在错误,但在执行此操作时失败并导致模态对话框以无用消息打扰你' 是一个完全可以接受的解决方案。;-) 我给了一个赞。" - Amos M. Carpenter

3

我不得不在Android中修改我的项目设置,将API级别改为我在android:targetSdkVersion中使用的级别。现在问题已经解决。


2

在我的清单文件中将Android版本从19升级到20后,我遇到了这个问题。我之所以这样做,是因为Eclipse提示我没有使用最新的Android版本,应该考虑更新它。

    <uses-sdk
    android:minSdkVersion="17
    android:targetSdkVersion="20" /> 

可能是因为我没有安装最新的SDK(20),导致出现了错误。

将其改回:

    <uses-sdk
    android:minSdkVersion="17"
    android:targetSdkVersion="19" />

对我来说解决了问题。


这给了我灵感,因为我有3个用于应用程序的项目和一个用于测试的项目。我在所有应用程序中混合使用了最低版本和目标版本。现在,所有应用程序的最低版本和目标版本都是11和19。 - JPM

2

我自己也遇到了这个问题。它只出现在一个库中,因为我可以清理和重建每个包,只有一个报告了这个错误。最终,我从一个源文件中撤消了一些编辑,Lint异常就消失了。这只是一个枚举类型作为方法中的形式参数,看起来相当无害,但是事实就是如此。它似乎是一个Lint bug,但是一个奇怪的bug。希望能对您有所帮助。


你是如何缩小范围的?我发现我可以在单个项目上运行 Lint,这样就缩小到可能只有一个项目了。但我仍然会收到“空指针”弹出消息,这似乎与我收到的 Lint 警告和消息是分开的。为什么当所有其他 Lint 消息都显示在窗口中时,“Lint Failed”消息会弹出?如果它真的是一个问题,为什么 Lint 不给我一个行号呢?我仍然认为 Lint 本身正在崩溃,但我不知道原因。 - Rob
2
真让我烦恼的是,每次保存文件后它就弹出一个对话框,恰好挡在屏幕中央。以前我总是关闭它,但现在我将其最小化,这样它就不会一直弹出来了...只是静静地在角落里收集它的失败信息。 - Rob
我开始逐个清理软件包。错误只出现在其中一个软件包中,这就缩小了范围。从当天的更改中复制后,我对代码进行了SVN还原,回到了当天的状态,这并没有产生错误 - 然后将我的更改重新放回去,直到出现错误,并选择了另一种完成任务的方式(在这种情况下使用Int而不是Enum没有产生错误)。 - ArgentMage
我应该提到,自那以后在同一个包中发生了几次这样的情况,所以我更频繁地提交我的源代码更改。这绝对是一种奇怪的 Eclipse 错误,因为代码运行得很好,在“问题”选项卡中也没有任何线程错误。非常奇怪,非常恼人。 - ArgentMage
有趣。我不知道要回溯多少才能停止,但这可能值得一试。我在项目的主目录中找到了一个lint.xml文件,并将其删除,希望这会有所改善。最初似乎是有效的,但现在又回到了原来的状态。 - Rob

1
我曾经遇到过这个问题,后来发现Java编译器已经回退到了1.5版本。将其设置为1.6版本后,问题得以解决。具体操作是:选择“属性”>“Java编译器”>“编译器兼容性级别”>“1.6”。我偶尔也会遇到这种情况,但不确定编译器为什么会回退到1.5版本。

1
我仔细查看了所有的项目,确实找到了一个设置为1.5的项目。我把它改成了1.6,但是仍然遇到非常让人烦恼的Lint NPE弹窗。 - Rob

0

我不是专家,英语也不是我的母语。但我有一个解决这个问题的方法。

appocompat_v7数据被破坏时,我遇到了这个问题。所以我在我使用的工作空间中删除了那个apk。然后我在我的工作空间中生成了一个新的apk,在appcom...自动生成并且现在它可以正常工作。


这对我来说看起来是一些自制的糟糕英语。 - user1300630
是的,我标记了这个答案,但我的标记被拒绝了 :/ - Ela782

0
以下步骤帮助我解决了相同的问题。 在我的项目中 -> 上下文菜单 -> Android工具 -> 修复项目属性 在AndroidManifest.xml中更改为最新版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接