Android Studio提示“无法解析符号”,但项目已编译


97

我在build.gradle中使用以下内容在AndroidStudio中导入twitter4j:

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
  compile files('libs/twitter4j-core-3.0.4.jar')
}

该项目编译良好,我可以毫无问题地创建twitter对象。但是,在Android Studio中,引用该库的所有内容均显示“无法解析符号”并显示为红色。我需要做什么才能使Android Studio识别该库?

我已经尝试过重建项目,。/ gradlew clean,然后关闭并重新打开我的项目。



2018年,Android Studio 3+:有时,Android Studio和Gradle不同意。解决方案在这里:stackoverflow.com/questions/50313885/…–
user1506104

将练习项目导入Android Studio后,我遇到了同样的问题。导入Android Studio时,警告我并建议更新sdk版本,因此我遵循了建议。之后,某些内容不再兼容,因此Android Studio建议更改其他版本。遵循所有这些建议后,我遇到了相同的“找不到符号”问题。我撤消了更改,再次导入了项目,这次没有遵循Android Studio的提示。之后,错误消失了。要谨慎地盲目遵循该程序的建议。
戴维(David)

Answers:


237

不知道这是否行得通,但到目前为止,我唯一的想法是:右键单击AS中文件树中的jar文件,然后选择“添加为库...”。

编辑:您可以执行“文件”->“使缓存无效...”,然后选择“使无效并重新启动”选项以解决此问题。

编辑2:此修复程序应适用于所有类似的事件,而不是特定于twitter4j的解决方案。


右键单击罐子时,没有将其作为选项。我正在运行0.2.13。
TG-T

这可能意味着您已经做到了。尝试“文件”>“项目结构”,并确认您在模块节点中看到了.jar文件。
doydoy

11
使缓存无效并重新启动对我不起作用。我也尝试过重新安装android studio并重新导入项目。这很烦人……
Clocksmith

3
“ File”->“ Invalidate Caches ...”刚刚保存了我的一天。我在这个问题上浪费了很多时间。为什么这个答案不是最佳搜索结果?非常感谢!
埃里克·科克伦

1
折腾致谢
Yevgeny Simkin '18

33

尝试在文件>项目结构>(选择项目)>依赖关系中更改依赖关系的顺序。

Invalidate Caches对我不起作用,但是将我的构建从列表的底部移到顶部却可以。


更改依赖关系的顺序对我有帮助,我尝试了答案中给出的所有解决方案,谢谢您的帮助。
wqycsu 2015年

向上移动一个依赖项对我来说很成功!(Android Studio 3.0.1)。
塞巴斯蒂安

是的,移动依赖关系并不重要,只需更改任何人的顺序即可,这也适用于Android Studio 3.3。
karique

12

这对我有用。

在“项目”面板中,右键单击项目名称,然后Open Module Settings从弹出菜单中选择。

然后将更Compile SDK Version改为可用的最低版本(您在项目中设置的最低sdk版本)。等待android studio加载所有内容。

它将给您一些错误,请忽略那些错误。

现在转到您的Java文件,Android Studio会建议您导入

导入android.support.v4.app.FragmentActivity;

导入它,然后回到Open Module Settings并将sdk编译版本更改回以前的版本。

等待东西加载,瞧。


这是出色的工作。就我而言,Android Studio向我报告了所有无法解析的SDK类(包括String,Integer,TextView等)。在此之前,aStudio还告诉我她找不到我用来编译项目的android-14 SDK。我忽略了这个问题。最终,我找到了这个答案并遵循,更改了编译sdk版本,然后开始工作了。感谢您节省我的时间。
2015年

Now go to your java file and android studio will suggest you import就我而言,不是这样
NineCattoRules

9

因为我的是由导入的库项目引起的,请在build.gradle中键入一些内容,然后再次将其删除,然后按sync,错误消失了。


6

我的Android应用程序也遇到了这个问题,具体取决于我自己的一些Android库(使用Android Studio 3.0和3.1.1)。

每当我更新一个库并返回到应用程序,触发Gradle Sync时,Android Studio就无法检测到我对该库进行的代码更改。编译工作正常,但是Android Studio使用lib在某些代码上显示了红色错误行。

经过调查,我发现这是因为gradle一直指向我的库的旧编译版本。如果转到yourProject / .idea / libraries /,您将看到xml文件列表,其中包含指向库的编译版本的链接。这些文件以Gradle__artifacts _ *。xml(其中*是您的库的名称)开头。

因此,为了使Android Studio能够获取您的库的最新版本,您需要删除这些Gradle__artifacts _ *。xml文件,然后Android Studio会重新生成它们,指向您库的最新编译版本。

如果您不想每次单击“ Gradle sync”(谁愿意这样做...)时都手动执行此操作,则可以将此小gradle任务添加到应用程序的build.gradle文件中。

task deleteArtifacts {
    doFirst {
        File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
        File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)

        for (int i = 0; i < files.length; i++) {
            files[i].delete()
        }
    }
}

为了使您的应用在执行Gradle同步之前始终执行此任务,您只需要转到Gradle窗口,然后在yourApp / Tasks / other /下找到“ deleteArtifacts”任务,右键单击它,然后选择“执行同步之前”(请参见下文)。

Gradle窗口配置任务执行

现在,每次执行Gradle同步时,Android Studio都将被迫使用您的库的最新版本。


5

当我在项目中遇到这个问题(红色代码,但它们可以正常工作)时;

首先,我做到了(文件->指示兑现)->(无效并重新启动)。

最后,我在我的应用程序中重新同步了build.gradle文件。问题解决后。


3

Invalidate Caches / Restart 这次对我没用。

找到了这样的解决方案:

  1. 删除build.gradle中的compile ***implementation ***行。

  2. 清理并重建。错误应该在这里提出。

  3. 将步骤1中的行添加回build.gradle。

  4. 清理并重建。

奇怪的...


2

当我的Glass项目未使用Android Studio默认位置中安装的SDK时,发生了此问题。我正在使用以前从ADT获得的另一个位置,因为我试图避免重新下载所有内容。一旦将项目指向Android Studio安装位置中的SDK位置,问题就消失了。


是的,我想这也是一个好消息:默认情况下,android studio将决定所有SDK都安装在默认的android studio安装目录中。如果没有遵循该模式,则需要对此进行修改。
doydoy

2

我有几天这个问题,终于解决了!顺便说一句,所有其他解决方案都不适合我。

解决方案:我的项目路径中有特殊字符!

只要确保这些都不用,就应该没问题,或者至少有其他解决方案之一适合您。

希望这对某人有帮助!


请检查您的项目路径中是否包含特殊字符,如!(感叹号)。在我遇到stackoverflow.com/questions/32477067/…的类似问题中,这是根本原因。许多Java应用程序似乎不容许这样的特殊字符(例如,从终端执行“ gradlew clean”会失败并抛出RunTimeException。)。在线发布的其他解决方案都没有帮助我。但是,一旦我删除了!从头开始并进行了干净的构建,Android Studio神奇地工作了。
Jim C

哇!谢谢:)
Josep Escobar

1

我最近在Android Studio 1.3中遇到了同样的问题。唯一可行的解​​决方案是删除.gradle和.idea文件夹,然后将项目重新导入到Android Studio中。


1

对于那些尝试接受的答案却没有成功的人,

我也尝试了接受的答案,但对我没有用。之后,我使用存储库更新了我的项目并同步了该项目,无法解决的警告消失了。



1

如果没有其他帮助,您可以采取措施,因为 Android Studio突然无法解析符号建议:

  • 退出Android Studio
  • 备份您的项目
  • 删除所有.iml文件和.idea文件夹
  • 重新启动Android Studio并重新导入您的项目

0

就我而言,我已经使用GUI创建了一个新文件,并在文件中定义了一个接口。我不断收到此符号错误,因为该文件不是“ java”文件。它根本没有扩展。

将文件扩展名修改为“ .java”后,系统会正确找到符号。


0

在我的情况下,jar文件没有META-INF / MANIFEST.MF文件。添加一个后,它起作用了!


0

对于使用AndroidStudio 2.2.3的情况,解决方案是在Gradle设置中更改gradle包装器/分发以使用本地的包装(尽管“被推荐”)。 在此处输入图片说明


0

这对我有用-(文件->指示兑现)->(无效并重新启动)。


0

我尝试了使缓存无效/重新启动或清除项目->重建项目。这些对我没有用。

最终的解决方案是打开IDE左侧的Project窗口,在Project模式下,删除.gradle和.idea文件夹,然后可以使缓存无效并重新启动。这样就解决了。



0

更改语言注入设置对我有用。

将光标放在任何带红色下划线的代码上,然后 Alt + Enter

在此处输入图片说明

现在选择Language Injection Settings,将打开一个窗口,如下所示。

在此处输入图片说明

取消选中所选选项,然后单击“确定”。

在此处输入图片说明

希望这对某人有帮助。


0

当我删除中的整个文件时,发生了事情.gradle/caches,然后Studio下载了相关性。依赖关系未在中显示,External Libraries但我可以成功构建App。rebuild clean Invalidate and Restart没有效果。我通过以下步骤解决了问题:

  • 完全关闭Android Studio
  • 去掉 .idea项目中的包
  • 重新启动Android Studio

0

我已经尝试过了,但是对我没有用:

  • Invalidate Caches / Restart
  • Changing the order of dependencies
  • Sync project with Gradle Files
  • Clean -> Rebuild Project

就我而言,请执行以下操作:

  • Delete all files in .idea/libraries folder
  • Rebuild Project

0

对我来说,我将gradle-wrapper.properties更新为4.4

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

0

我找到了最简单的方法

确定在Studio中引起语法错误的库。

例如,如果AppCompatActivity显示错误,则将对AppCompat依赖项执行以下操作。

  • 删除显示语法错误和同步的依赖项。
  • 再次添加并同步。

就是这样,错误消失了!

之前

之前

后


0

上面的答案都不适合我。

经过大量尝试,我将Project / build.gradle中的com.android.tools.build:gradle从2.3.0升级到了3.0.1,并且可以正常工作。

我猜com.android.tools.build:gradle的版本应该与AndroidStudio的版本匹配,我的AS版本是3.2.1。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.