如何解决 (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) 反应原生问题