如何解决 (Could not initialize class org.codehaus.groovy.reflection.ReflectionCache) 反应原生问题

Posted

技术标签:

【中文标题】如何解决 (Could not initialize class org.codehaus.groovy.reflection.ReflectionCache) 反应原生问题【英文标题】:How to solve (Could not initialize class org.codehaus.groovy.reflection.ReflectionCache) issue in react native 【发布时间】:2020-07-05 17:27:37 【问题描述】:

$ npx react-native run-android info 运行 jetifier 将库迁移到 AndroidX。您可以使用“--no-jetifier”标志禁用它。 Jetifier 找到 864 个文件来转发-jetify。使用 4 名工人... info 正在启动 JS 服务器... 信息正在启动模拟器... 错误无法启动模拟器。原因:无法在 30 秒内启动模拟器。 警告 请手动启动模拟器或连接设备。否则,应用程序可能无法启动。 info 正在安装应用程序...

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

出了什么问题: 无法初始化类 org.codehaus.groovy.runtime.InvokerHelper

尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

在 1m 23s 内构建失败

错误 无法安装应用程序。确保您已设置 Android 开发环境:https://facebook.github.io/react-native/docs/getting-started.html#android-development-environment。使用 --verbose 标志运行 CLI 以获取更多详细信息。 错误:命令失败:gradlew.bat app:installDebug -PreactNativeDevServerPort=8081

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

出了什么问题: 无法初始化类 org.codehaus.groovy.runtime.InvokerHelper

尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

在 1m 23s 内构建失败

at checkExecSyncError (child_process.js:629:11)
at execFileSync (child_process.js:647:13)
at runOnAllDevices (E:\work\react-native\AwesomeProject1\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:94:39)

【问题讨论】:

【参考方案1】:

我想我有同样的问题。安装 RN(2020 年 5 月 20 日)后,我遇到了这个错误。我在https://github.com/gradle/gradle/issues/10248 上找到了这个解决方案。

简而言之:

    转到您的 RN 项目中的 /android/gradle/wrapper/gradle-wrapper.properties 文件

    找到以distributionUrl 开头的行。将gradle版本改为gradle-6.3-all.zip

在我的项目中是:

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

我把它改成了:

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

就是这样。

【讨论】:

我可以确认,更改distributionUrl问题已解决(2020年5月29日) 是的,7 月 7 日,在格式化我的 macos 并安装了错误的 Java 依赖项后,此修复程序奏效了。 为我工作。我的是 V6.2,改成 V6.3 修复了。 哇。这解决了我从初始安装开始的所有问题。谢谢 太棒了!仍然有效!【参考方案2】:

我在 Mac OS 和 React Native v0.62 上遇到了同样的错误。

正确应用这些说明:React native environment setup

添加这个变量解决了我的问题:

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

【讨论】:

在 linux 上,我有一个不包含“jdk/”的路径,它现在可以工作了。 export JAVA_HOME=/usr/lib/jvm/java-14-openjdk/ 之前 ==> export JAVA_HOME=/PATH/TO/android-studio/jre/ 在 MacOs Catalina 10.3 上为我工作。谢谢 显然将路径设置为$(/usr/libexec/java_home) 不起作用,但你的。 适用于 macOS BigSur,说真的,一票还不够!【参考方案3】:

React Native 版本 0.62.x 中,即使已初始化的应用程序还没有准备好进行开发构建。

我将 Gradle 版本更改为最新版本,并且可以进行干净的构建,因此请更改此文件:

// this file => /android/gradle/wrapper/gradle-wrapper.properties

来自:

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

到:

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

注意我当时最新的 Gradle 版本是 6.5。当您阅读此答案时,请查看this link 以查看 Gradle 的最新版本号。

2021 年 12 月更新

7.3.1

【讨论】:

@Imtee,很高兴我的回答对您有所帮助。如果可能,请为我投票this post。谢谢。【参考方案4】:

我通过以下步骤解决了这个问题:

    安装 android studio 3.5(或更高版本) 安装java 1.8 如果您有 java JDE 14.x.x,则必须从 library/java/JavaVirtualMachines/jdk-14.x.x.jdk 中删除其文件夹(在 mac os 上) 安装旧版本的 JDE(我安装的是 11.0.6) npm 运行安卓!

【讨论】:

非常感谢!这对我有用。 PS:我换了新电脑。并从 Github 中提取我的 react-native 项目,但 npm instapp && react-native run-android 失败了。我照你说的做了,然后砰。现在一切正常。【参考方案5】:

只需按照这 2 个步骤,就可以喝咖啡了。

    导航到“android”> gradle > wrapper > gradle-wrapper.properties

    将“distributionUrl”从旧更改为 >

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

【讨论】:

【参考方案6】:

当您使用的gradle版本与您的环境不兼容时会出现此错误,因此您只需将您的gradle版本更新为最新的Gradle Versions,只需转到:/android/gradle/wrapper/gradle-wrapper.properties到您的项目文件即可。

【讨论】:

【参考方案7】:

2021 年 8 月

我使用JDK 16.0.1 并遇到了这个问题。因此,对于JDK 16.0.1,您需要7.0 版本的gradle

我通过转到/android/gradle/wrapper/gradle-wrapper.properties 并更改来修复它

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

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

【讨论】:

【参考方案8】:

如果你是 macOS 用户,那么你应该安装

brew cask install adoptopenjdk/openjdk/adoptopenjdk8
brew cask install android-platform-tools

更新你的 .bash_profile

nano ~/.bash_profile
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

这将解决您的问题。如果您正在处理遗留代码库,那么更改分发 URL 会导致其他问题。这通常是由于 java 版本不匹配造成的。

【讨论】:

【参考方案9】:

这可能是因为你使用 Gradle 作为构建系统和 JDK14 Gradle 版本很旧。参考:

如果您使用 Gradle Wrapper,请参考

$PROJECT_ROOT/gradle/wrapper/gradle-wrapper.properties

属性 distributionUrl 应该是:

distributionUrl=https://services.gradle.org/distributions/gradle-6.3-bin.zip

如果是旧版本,请更改它,运行./gradlew clean build 然后再试一次。

【讨论】:

【参考方案10】:

这是因为 Java JDK 不支持您的 Gradle 版本。如果你使用 JDK 版本 15.0.2 那么你需要将 Gradle 版本更改为 6.6.1 或 6.7

在 Android Studio 中更改 Gradle 版本。

android[项目名称]/gradle/wrapper/gradle-wrapper.properties

打开这个文件并设置它

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

那么这个问题就解决了。

检查 java JDK 版本。

打开命令。 运行 echo %JAVA_HOME%

那你也可以在google上搜索一下Gradle到JDK支持的版本。

【讨论】:

【参考方案11】:

在 mac OS 中更新 JAVA_HOME 对我有用

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

【讨论】:

【参考方案12】:

这个问题是由不正确的 graddle 版本引起的。所以要解决这个问题,请按照以下步骤操作

确保您已经安装了 Android Studio,并且从 Android Studio 菜单 Tool-> SDK Manager 设置了 SDK,您可以设置 SDK,如果您使用的是最新版本的 React Native,请安装最新的 SDK。 从 Android Studio 菜单工具 > AVD Manager 设置一台设备并下载图像。并对其进行测试以查看模拟器运行正常。 确保安装了最新的 JDK 以响应本机安装最新的 JDK:https://www.oracle.com/java/technologies/javase-downloads.html 接下来从 Android Studio 菜单文件 > 新建 > 新项目创建一个虚拟项目,即 Hello world 并构建确保所有 android studio 问题都已解决,并且您的 Android studio hello world 应用正在模拟器上运行。 现在是时候修复您的 React Native 应用程序了。停止您的 Android Studio hello world 应用并保持模拟器运行。 在您的系统上找到您的 Android Studio hello world 应用,然后转到 gradle\wrapper 文件夹并复制 gradle-wrapper.properties 文件

Windows 案例中的示例我的 hello world 应用程序位于我的文档中: C:\Users\Superman\Documents\android\hello world\gradle\wrapper

接下来转到您的 react native 应用程序文件夹,例如:myReactApp\android\gradle\wrapper 并粘贴 gradle-wrapper.properties 您从 Android Studio hello world 应用复制的文件。 最后在你的终端执行:npx react-native run-android

【讨论】:

【参考方案13】:

我对新项目和窗口有同样的问题。我尝试了所有这些方式,但它没有。可笑的是,我将 java/jdk 文件夹从 C:\Program Files 移动到 D:\ 中的另一个目录,它就像一个魅力。 可能有用。

【讨论】:

【参考方案14】:

2021 年 12 月

如果您使用的是最新版本的 Java 开发工具包,则需要更改项目的 Gradle 版本,以便它可以识别 JDK。您可以通过转到 project root folder\android\gradle\wrapper\gradle-wrapper.properties 并更改 distributionUrl 值来升级 Gradle 版本来做到这一点。你可以在这里查看lastest releases of Gradle。

【讨论】:

【参考方案15】:

如果您正在寻找 Java/Kotlin Core Android project 而不是 React Project 的解决方案,因为我在我的核心 android 项目中也遇到了这个问题,所以你去... 以上解决方案都不适合我。所以基本上这个想法是改变gradle的版本。你问怎么做?请按以下步骤操作:

    File>Project Structure 选择SDK Location 您会发现一些写成“JDK 已移至 Gradle 设置”的内容。点击Gradle Settings。 使用 Gradle 版本11.0 再次同步项目。

你去吧!一个成功的项目! :)

【讨论】:

以上是关于如何解决 (Could not initialize class org.codehaus.groovy.reflection.ReflectionCache) 反应原生问题的主要内容,如果未能解决你的问题,请参考以下文章

Error: could not find java.dll如何解决

如何解决设置maven时Could not read settings.xml

如何解决 could not open `E:javalibamd64jvm.cfg‘

Application MyTest has not been registered. This is either due to a require() error during initializ

如何解决 (Could not initialize class org.codehaus.groovy.reflection.ReflectionCache) 反应原生问题

如何解决部署Win10出现的Could not find the unattend file报错?