【问题标题】:No Java files found which extend CordovaActivity. when use "cordova build"未找到扩展 CordovaActivity 的 Java 文件。使用“cordova build”时
【发布时间】:2013-12-14 12:57:38
【问题描述】:

我的电脑是 Windows 8 64bit,我为我的项目安装了 cordova 和 android 平台,我通过输入 cordova create hello com.example.hello HelloWorldcordova platform add android 创建了我的项目 但是当我运行cordova build 时,它显示以下错误:

[Error: No Java files found which extend CordovaActivity.]

我在网上搜索了但还没有找到解决方案,请问是什么问题?

【问题讨论】:

  • 您是如何安装 Cordova 的?运行命令时是否连接到互联网?您可以在所有命令中使用-d 标志再试一次并发布结果吗?

标签: java android cordova


【解决方案1】:

当我从另一个项目克隆我的存储库时,我遇到了同样的错误。我通过删除平台并重新添加它来解决它。

删除:cordova platform rm android
添加:cordova platform add android

【讨论】:

  • 帮助很大。谢谢!
  • cordova clean 不知何故后体验了它......无论如何,这解决了它,所以它应该是接受的答案恕我直言。
  • 谢谢。解决了!
  • 谢谢,帮了大忙……
【解决方案2】:

您只需删除平台cordova platform rm android 并输入cordova platform add android 重新添加平台,错误就会消失

【讨论】:

    【解决方案3】:

    在 Eclipse 或其他编辑器中,进入 platform/android/src/ 下的 .java 源文件,并确保该类扩展了 CordovaActivity(它之前可能已经扩展了 DroidGap)。

    【讨论】:

    • 感谢@hyperizer - 你只是对 Stack Overflow 的贡献,但它救了我!
    • 谢谢!从 2.x 升级时遇到同样的问题 例如将:public class Your_App_Name extends DroidGap 更改为:public class Your_App_Name extends CordovaActivity
    • 这不适用于不使用 CordovaActivity 的混合动力。
    • 我正在使用 ionic v5 运行,.java 源文件在platforms/android/src/ 下不存在。我在哪里可以找到它?
    【解决方案4】:

    我遇到了同样的问题(尽管在 Ubuntu 上)并尝试了 Hyperizer 的答案,这应该可以工作......但对我没有影响。请注意,我在升级 cordova(从 3.0.9 到 3.4.0-0.1.3)后遇到了错误,因此我生成的平台文件夹与最新的 cordova 版本不同步。

    我发现最干净的事情(这对我有用)是删除你的 /platforms/android 目录(根据cornelius的回答......但我的重点是cordova),然后用cordova重新创建你知道一切都是最新的,并且与当前的 cordova 版本一致。

    cd platforms
    rm -rf android
    cd ..
    cordova platform add android
    

    您的 android 文件夹已重新创建,现在尝试再次构建并运行。

    cordova build android
    cordova emulate android
    

    删除并重新创建 android 平台文件夹的缺点是您需要重新应用您可能对 android 源代码所做的任何自定义...(谢天谢地,我不必这样做)但是您应该是能够从你的 git 等中提取它。至少现在你正在处理一个干净整洁的最新版本。

    【讨论】:

      【解决方案5】:

      当我从config.xml中更改包id名称时发生此错误,例如io.cordova..etc为另一个包名,所以我通过删除android平台并更改版本信息和包名来解决它配置文件,然后运行命令 android cordova platform add android

      【讨论】:

        【解决方案6】:

        带有扩展 CordovaActivity 的 Activity 的 .java 文件必须完全位于 com.example.app 中 - 正如 config.xml 的 id="com.example.app" 标记中指定的那样。

        这在 3.2.0 中发生了变化 - 提交了错误报告:https://issues.apache.org/jira/browse/CB-5515

        【讨论】:

        • 我也有同样的问题。我无法编译,当尝试使用 CLI 运行应用程序时,我得到“没有找到扩展 cordovaactivity 的 Java 文件” 是否有可以运行的命令来获取所需的文件?我在 phonegap 网站上的任何地方都找不到它们可供下载。
        • 您已经拥有 .java 文件 - 它位于您的 cordova android 项目的 /src 文件夹的子文件夹中 - 搜索“CordovaActivity”。 --> 将此 java 文件中活动的包名称更改为全局 Cordova config.xml id 标签中指定的 id,例如“com.example.app”。
        • 您可以随时降级到 2.9.1 npm install -g phonegap@2.9.0-rc1-0.12.2
        【解决方案7】:

        只是关于 PhoneGap 3.2 导致相同错误的相关主题,您可能在配置和尝试使其最初运行时弄乱了应用程序

        对我有用的是删除生成的 android 平台文件,然后再次运行 RUN 命令。因此,从您的 PhoneGap 项目的主目录中,执行以下操作

        cd platforms
        sudo rm -rf android
        cd ..
        sudo phonegap local run android --emulator
        

        我正在使用 OSX 10.9 版的 Macbook Pro

        希望这对某人有所帮助!

        【讨论】:

        • 为我工作。我的问题是platforms\android\src\com\MyCom\MyApp 处缺少 MyApp.java 文件,该文件已通过删除 android 平台文件并重新构建/运行来恢复。
        【解决方案8】:

        通常在添加平台后更改 config.xml 文件中的 id 时发生:

        <widget id="changed-this-id" ... 
        

        修复:

        remove : cordova platform rm android
        add : cordova platform add android
        

        【讨论】:

          【解决方案9】:

          当您在 config.xml 中更改包 ID 或名称时会出现此错误,您需要做的就是通过键入“Cordova platform rm android”删除 android 平台并重新添加平台通过键入“Cordova 平台添加 android”。您可以获得成功的构建。

          【讨论】:

            【解决方案10】:

            我偶然发现了一个“解决方案”,适用于使用“隐藏”CordovaActivity 扩展的框架的任何人,即 MainActivity 看起来像这样:

            public class MainActivity extends GDCordovaActivity {...}
            

            其中 GDCordovaActivy 是您的框架 Activity 扩展 CordovaActivity。

            只需将“foo.java”文件添加到项目中,只包含这样的注释:

            /** extends CordovaActivity */
            

            由于 cordova 框架解析文件并且无法识别 cmets,您将能够调用 cordova android prepare 等而不会出现任何错误。

            【讨论】:

            • ^this -- 但只需在 MainActivity.java 中这样做: public class MainActivity extends RMCActivity /** extends CordovaActivity */ { ... }
            【解决方案11】:

            这个问题是由于缺少 MainActivity.Java 文件引起的 通常它位于以下路径。

            [Application Name]\platforms\android\src\com
            

            这里应该有基于你给定的命名空间的文件夹名称。

            Suppose I have  given namespace as com.passion.oilfreerecipes
            So there should have folder  passion --> OilfreeRecipes
            

            在它们里面你应该有 MainActivity.Java。

            当我清理解决方案时,它会在我的应用程序中清除。 您可以从其他项目中复制和粘贴,并根据需要更改 mainActivity.Java。

            【讨论】:

              【解决方案12】:

              如果config.xml 中的idandroid-packageName 不匹配,就会发生这种情况。

              android-packageName="com.example.app" id="com.example.app"

              【讨论】:

                【解决方案13】:

                我有太多自定义,不想重新创建平台。

                通过将defaults.xml 中的widget id 更改为新的包名解决了这个问题(我将默认的io.hellocordova 更改为我自己的包结构)

                【讨论】:

                  【解决方案14】:

                  我通过重置 JAVA 环境解决了这个问题。

                      $ sudo update-alternatives --config java
                  

                  选择 /usr/lib/jvm/java-1.8.0-openjdk-amd64 的编号。

                  按回车键保留当前选择[*],或输入选择编号:

                  要选择默认的 javac 编译器,请运行以下命令。

                      $ sudo update-alternatives --config javac
                  

                  如果您更喜欢使用 gui 而不是命令行,则可以执行 galternatives 并使用以下对话框定义软件的默认版本。

                      $ sudo galternatives
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2023-03-28
                    • 1970-01-01
                    • 2018-10-20
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-09-08
                    • 2016-06-04
                    相关资源
                    最近更新 更多