“执行任务':app:compileDebugJavaWithJavac'失败”。React Native相关。

21

在配置打包程序时,无法在您的项目中找到“expo”包。开始JS服务器...在设备上构建和安装应用程序(cd android && ./gradlew installDebug)...

任务:app:compileDebugJavaWithJavac FAILED / media / rahul / OTHER FILES / mob / first / android / app / src / main / java / com / practice / MainApplication.java:5:错误:找不到符号 导入com.facebook.react.ReactApplication; ^ 符号:类ReactApplication 位置:com.facebook.react包 / media / rahul / OTHER FILES / mob / first / android / app / src / main / java / com / practice / MainApplication.java:6:错误:找不到符号 导入com.facebook.react.ReactNativeHost; ^ 符号:类ReactNativeHost 位置:com.facebook.react包 / media / rahul / OTHER FILES / mob / first / android / app / src / main / java / com / practice / MainApplication.java:14:错误:找不到符号 public class MainApplication extends Application implements ReactApplication { ^ 符号:类ReactApplication / media / rahul / OTHER FILES / mob / first / android / app / src / main / java / com / practice / MainApplication.java:16:错误:找不到符号 private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { ^ 符号:类ReactNativeHost 位置:类MainApplication

/media/rahul/OTHER FILES/mob/first/android/app/src/main/java/com/practice/MainApplication.java:36: error: 找不到符号 public ReactNativeHost getReactNativeHost() { ^ symbol: class ReactNativeHost location: class MainApplication /media/rahul/OTHER FILES/mob/first/android/app/src/main/java/com/practice/MainActivity.java:5: error: MainActivity 不是抽象的,并且没有覆盖 ReactActivity 的抽象方法 getPackages() public class MainActivity extends ReactActivity { ^ /media/rahul/OTHER FILES/mob/first/android/app/src/main/java/com/practice/MainApplication.java:16: error: 找不到符号 private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { ^ symbol: class ReactNativeHost location: class MainApplication /media/rahul/OTHER FILES/mob/first/android/app/src/main/java/com/practice/MainApplication.java:35: error: 方法未覆盖或实现超类型的方法 @Override ^ 8 errors

FAILURE: 构建失败,出现异常。

  • 具体原因: 任务“:app:compileDebugJavaWithJavac”执行失败。

    编译失败,详细信息请参阅编译器错误输出。

  • 解决方案:

    请查看编译器错误输出以找到问题所在,并进行相应修改。

运行带有--stacktrace选项以获取堆栈跟踪。 运行带有--info或--debug选项以获取更多日志输出。 运行--scan以获取完整的洞察力。

  • https://help.gradle.org上获取更多帮助

  • BUILD FAILED in 22s 15个可执行任务:14个已执行,1个最新的 无法在设备上安装应用,请阅读上面的错误详情。 确保您已经运行了Android模拟器或连接了设备,并设置了Android开发环境: https://facebook.github.io/react-native/docs/getting-started.html

    我第一次设置react-native项目,请检查我是否正确按照以下步骤? 1.首先创建create-react-native-app 2.运行npm run eject 3.打开android studio然后打开模拟器 4.运行react-native run-android 但是遇到以上错误。


    2
    所以,请向上滚动查看更多详细信息。或者按照建议之一使用其中一个标志运行它。 - Kai
    11个回答

    28

    此错误是因为您的RN版本与Android的build.gradle版本不同造成的。当您创建一个React Native应用程序时,它可能会创建类似于以下内容的android应用程序:

    android/app/build.gradle
    
    implementation "com.facebook.react:react-native:+"
    

    因此,请检查您的node_modules文件夹,查找react-native文件夹并查找一个带有数字的文件夹,这些数字是react-native的版本号。对于我来说,它是0.58.3,然后更新android/app/build.gradle

    implementation "com.facebook.react:react-native:0.58.3"
    

    这就是全部。


    1
    寻找一个带有数字的文件夹 - 你是指从 package.json 中获取版本号吗?...这对我没用。 - conor909
    4
    我认为他在谈论的是:"project_folder\node_modules\react-native\android\com\facebook\react\react-native",我在那里找到了一个有数字的文件夹……我尝试过这个方法,但它并不适用于我的情况。 - a curious guy
    4
    你可以查看你的 package.json 文件来获取你的 React Native 版本。 - warrenbuffering
    1
    为什么你的解决方案有效? - Contestosis
    为什么这应该是解决方案? - bra.Scene

    12
    如果您在这里是因为React Native错误:
    > Task :react-native-community_toolbar-android:compileDebugJavaWithJavac FAILED
    

    解决方案是将@react-native-community/toolbar-android更新到版本0.2.1

    10

    您应该提供更多信息。您发布的错误信息不是很有帮助。

    如果没有更多信息,您可以尝试以下方法:

    cd android && ./gradlew clean
    

    看看它是否有帮助。


    我在命令行中进入了项目文件夹并粘贴了这个命令。 它说不认识“.”命令作为内部或外部命令。您能否提供更多详细信息,您是如何解决这个问题的? - Paras
    try gradlew clean - SHARAD
    不起作用,尝试了很多次。 - bra.Scene

    4

    就我所知,我在谷歌搜索类似的编译问题时,发现我的问题是由于操作系统更新导致Java JDK从我的路径中被删除了。解决该问题后,问题得到了解决。


    2

    我也遇到了类似的崩溃报告。但是在我的情况下,问题是缺少了 JAVA_HOME 环境变量。我将其设置为与Android Studio中相同的路径,并解决了该问题:File -> Project Structure -> SDK Location -> JDK location。

    export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home"
    

    2

    [对于通过谷歌搜索到这里的人]

    在我的情况下,当我尝试使用react-native link链接@react-native-async-storage/async-storage时,出现了错误。

    我使用React Native CLI初始化了我的项目,但它的版本比较老。但是我使用npx react-native link来链接依赖项。版本不匹配!

    据我所知,这是该错误的根本原因。

    您最有可能在android/app/src/main/java/com/focustime/MainApplication.javaandroid/settings.gradle中进行更改。 如果您正在使用git,只需checkout这两个文件即可。

    以下是RN link引入的更改:

    diff --git a/android/app/src/main/java/com/focustime/MainApplication.java b/android/app/src/main/java/com/focustime/MainApplication.java
    index ed18f44..2bdc42c 100644
    --- a/android/app/src/main/java/com/focustime/MainApplication.java
    +++ b/android/app/src/main/java/com/focustime/MainApplication.java
    @@ -4,6 +4,7 @@ import android.app.Application;
     import android.content.Context;
     import com.facebook.react.PackageList;
     import com.facebook.react.ReactApplication;
    +import com.reactnativecommunity.asyncstorage.AsyncStoragePackage;
     import com.facebook.react.ReactInstanceManager;
     import com.facebook.react.ReactNativeHost;
     import com.facebook.react.ReactPackage;
    diff --git a/android/settings.gradle b/android/settings.gradle
    index 20ccd07..f6f51cd 100644
    --- a/android/settings.gradle
    +++ b/android/settings.gradle
    @@ -1,3 +1,5 @@
     rootProject.name = 'FocusTime'
    +include ':@react-native-async-storage_async-storage'
    +project(':@react-native-async-storage_async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-async-storage/async-storage/android')
     apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
     include ':app'
    

    1
    大多数情况下,这是由于ANDROID_HOME的配置不正确造成的。其他时候可能是gradle版本不匹配。
    如果您正在使用较新的Mac默认的zsh,请打开终端并输入以下命令:
    nano ~/.zshrc 或 vim ~/.zshrc
    然后粘贴这三行代码。
    export ANDROID_HOME=$HOME/Library/Android/sdk
    
    export PATH=$PATH:$ANDROID_HOME/emulator
    
    export PATH=$PATH:$ANDROID_HOME/platform-tools
    

    保存文件后再运行

    source ~/.zshrc
    

    关闭终端并完全运行您的模拟器


    1
    这种情况通常是因为我忘记安装某些模块。

    然后我运行:

    1. npm install

    2. npx react-native run-android

    注意:你也可以运行npx react-native link,以链接你的模块。


    1

    在我的情况下

    我的React Native版本是0.62.2

    以及

        buildToolsVersion = "31.0.0"
        minSdkVersion = 21
        compileSdkVersion = 31
        targetSdkVersion = 31
        supportLibVersion = "28.0.0"
    

    所以我只是更新了compiledSdkVersiontargetSdkVersion

        buildToolsVersion = "31.0.0"
        minSdkVersion = 21
        compileSdkVersion = 33
        targetSdkVersion = 33
        supportLibVersion = "28.0.0"
    

    Android 13 支持编译版本(compiledSdkVersion)和目标版本(targetSdkVersion)应更改为33


    0
    我通过以下步骤解决了这个问题: 首先检查您的所有JAVA环境变量是否设置正确, 如果没有设置,请进行如下设置:
    >  JAVA_HOME : C:\Program Files\Java\jdk1.8.0_112
    >          JDK_HOME  : %JAVA_HOME%
    >          JRE_HOME  : %JAVA_HOME%\jre
    >          CLASSPATH : .;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib
    >          PATH      : ....;%JAVA_HOME%\bin
    

    然后我添加了jdk路径:
    org.gradle.java.home=C:\Program Files\Java\jdk1.8.x.x
    到gradle.properties文件中。
    最后,在终端中运行了以下命令:
    cd android &&./gradlew clean
    cd .. && react-native run-android
    

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