任务“:app:compileDebugJavaWithJavac"执行失败.在运行 React Native 项目时 [英] Execution failed for task ':app:compileDebugJavaWithJavac'. while running React Native Project
问题描述
我在我的真实 Android 设备上运行我现有的 React Native 项目.然后以某种方式弹出这个错误.错误总是关于找不到符号".我有 JDK 和 SDK 并添加到我的系统变量中.但我仍然不知道为什么它会给我这样的错误.我记得,我只是降级了 react-native 的版本.
I was running my existing React Native Project in my real android device. Then somehow this error pop up. The error are always about "cannot find symbol". I have JDK and SDK and add into my system variables. But I still do not know why it gives me error like this. As I remember, I just downgrade the version of react-native.
:app:compileDebugJavaWithJavac - 不是增量的(例如,输出已经改变,之前没有执行等).D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:5:错误:找不到符号导入 com.facebook.react.ReactApplication;^符号:类 ReactApplication位置:包 com.facebook.reactD:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:6: 错误:找不到符号导入 com.facebook.react.ReactNativeHost;^符号:类 ReactNativeHost位置:包 com.facebook.reactD:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:14: 错误:找不到符号公共类 MainApplication 扩展应用程序实现 ReactApplication {^符号:类 ReactApplicationD:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:16: 错误:找不到符号私有最终 ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {^符号:类 ReactNativeHost位置:类 MainApplicationD:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:36: 错误:找不到符号公共 ReactNativeHost getReactNativeHost() {^符号:类 ReactNativeHost位置:类 MainApplicationD:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainActivity.java:5: 错误:MainActivity 不是抽象的,并且不会覆盖 ReactActivity 中的抽象方法 getPackages()公共类 MainActivity 扩展了 ReactActivity {^D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:16: 错误:找不到符号私有最终 ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {^符号:类 ReactNativeHost位置:类 MainApplicationD:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:35: 错误:方法没有覆盖或实现来自超类型的方法@覆盖^8 错误:app:compileDebugJavaWithJavac 失败
:app:compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.). D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:5: error: cannot find symbol import com.facebook.react.ReactApplication; ^ symbol: class ReactApplication location: package com.facebook.react D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:6: error: cannot find symbol import com.facebook.react.ReactNativeHost; ^ symbol: class ReactNativeHost location: package com.facebook.react D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:14: error: cannot find symbol public class MainApplication extends Application implements ReactApplication { ^ symbol: class ReactApplication D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:16: error: cannot find symbol private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { ^ symbol: class ReactNativeHost location: class MainApplication D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:36: error: cannot find symbol public ReactNativeHost getReactNativeHost() { ^ symbol: class ReactNativeHost location: class MainApplication D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainActivity.java:5: error: MainActivity is not abstract and does not override abstract method getPackages() in ReactActivity public class MainActivity extends ReactActivity { ^ D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:16: error: cannot find symbol private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { ^ symbol: class ReactNativeHost location: class MainApplication D:\rnprojects\firstproject\android\app\src\main\java\com\emptyprojecttemplate\MainApplication.java:35: error: method does not override or implement a method from a supertype @Override ^ 8 errors :app:compileDebugJavaWithJavac FAILED
FAILURE:构建失败,出现异常.
FAILURE: Build failed with an exception.
- 出了什么问题:任务:app:compileDebugJavaWithJavac"执行失败.编译失败;有关详细信息,请参阅编译器错误输出.
Build.gradle:
Build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
Build.gradle/app:
Build.gradle/app:
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.emptyprojecttemplate"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
}
dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
推荐答案
您的堆栈跟踪开始于: error: cannot find symbol import com.facebook.react.ReactApplication
这似乎表明它找不到反应库导入.
Your stacktrace starts with : error: cannot find symbol import com.facebook.react.ReactApplication
this seems to suggest it cannot find the React Library import.
我将在 Github 上为您提供答案,请在此处阅读:
I'm going to include a answer on Github for you, read here:
https://github.com/transistorsoft/react-native-background-geolocation/issues/294
(顺便说一句,这与您在 /your-project/android/build.gradle
中的 build.gradle 相关)
(Btw, this relates to your build.gradle in /your-project/android/build.gradle
)
如果其他人遇到同样的问题:请确保您正确添加了新的存储库.根据 Android 文档,每个 maven 存储库都应该在自己的 maven {} 块中.
In case anyone else is experiencing the same issue: make sure you correctly add new repositories. According to Android docs every maven repo should be in its own maven {} block.
这就是为什么
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
url 'some new extra repo'
}
打破依赖关系.正确的版本是
breaks dependencies. The correct version is
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven {
url 'some new extra repo'
}
更新
因为上面没有解决你的问题,你的 build.gradle(s) 看起来不错(对我来说).我将包括一些其他解决方案:
As the above isn't solving your issue and your build.gradle(s) look good (to me). I'll include some other solutions :
按照此处的建议升级 RN 和 RN-cli:
Upgrade RN and RN-cli as advised here:
无法解析符号 ReactApplication/ReactNativeHost
这里还有一个:
这里还有一个:
最后的手段
它可能只是创建一个新的测试项目(使用最新版本)像 react-native init anotherproject
来看看它是否运行是值得的.
It may be worth in just creating a new test project (with the latest versions) like react-native init anotherproject
to see if that runs.
这篇关于任务“:app:compileDebugJavaWithJavac"执行失败.在运行 React Native 项目时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!