首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`MainApplication.java`或Kotlin文件不包括包声明。

`MainApplication.java`或Kotlin文件不包括包声明。
EN

Stack Overflow用户
提问于 2021-09-14 22:24:06
回答 1查看 616关注 0票数 0

我试图将expo-av安装到一个非世博反应本地项目中。在安装react-native-unimodules并调整android/app/build.gradle文件之后,我再也无法构建安卓应用程序了。

这是我遇到的主要错误:

终端看起来如下:Java或Kotlin文件不包括包声明.

代码语言:javascript
复制
ENVFILE=.env react-native run-android

info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 2152 file(s) to forward-jetify. Using 16 workers...
info JS server already running.
info Installing the app...
Configuration on demand is an incubating feature.

> Configure project :app
Reading env from: .env

FAILURE: Build failed with an exception.

* Where:
Script '/Users/*REDACTED*/HF-Projects/*REDACTED*/node_modules/react-native-unimodules/gradle.groovy' line: 75

* What went wrong:
A problem occurred evaluating project ':app'.
> Java or Kotlin file /Users/*REDACTED*/HF-Projects/*REDACTED*/android/app/src/main/java/com/*REDACTED*/MainApplication.java does not include package declaration

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 14s

我搜索了那个文件上的package,发现了26次。

在这个packages实例上有这个ReactNativeHost变量。

代码语言:javascript
复制
private final ReactNativeHost mReactNativeHost =
      new ReactNativeHost(this) {
        @Override
        public boolean getUseDeveloperSupport() {
          return BuildConfig.DEBUG;
        }

        @Override
        protected List<ReactPackage> getPackages() {
          @SuppressWarnings("UnnecessaryLocalVariable")
          List<ReactPackage> packages = new PackageList(this).getPackages();
          // Packages that cannot be autolinked yet can be added manually here, for example:
          // packages.add(new MyReactNativePackage());
          // Add unimodules
          List<ReactPackage> unimodules = Arrays.<ReactPackage>asList(
            new ModuleRegistryAdapter(mModuleRegistryProvider)
          );
          packages.addAll(unimodules);
          return packages;
        }

        @Override
        protected String getJSMainModuleName() {
          return "index";
        }

          @Override
          protected JSIModulePackage getJSIModulePackage() {
              return new ReanimatedJSIModulePackage(); // <- add
          }

      };

有人知道这个错误吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-14 22:24:06

简单的答案是:

这是一个简单的验证,它查找该java类的主java。在文件的顶部,应该有一个package com.yourcompany.example

碰巧,我的MainApplication.java类在包后面有两个空格。

所以大王没有找到它。

在此验证中使用的regex可在文件node_modules/react-native-unimodules/gradle.groovy第67行中找到。

使用的Regex:/^package ([0-9a-zA-Z._]*);?$/

代码语言:javascript
复制
def readPackageFromJavaOrKotlinFile(String filePath) {
  def file = new File(filePath)
  def fileReader = new BufferedReader(new FileReader(file))
  def fileContent = ""
  while ((fileContent = fileReader.readLine()) != null) {
    def match = fileContent =~ /^package ([0-9a-zA-Z._]*);?$/
    if (match.size() == 1 && match[0].size() == 2) {
      fileReader.close()
      return match[0][1]
    }
  }
  fileReader.close()

  throw new GradleException("Java or Kotlin file $file does not include package declaration")
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69185112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档