未找到扩展 CordovaActivity 的 Java 文件。使用“cordova build”时

Posted

技术标签:

【中文标题】未找到扩展 CordovaActivity 的 Java 文件。使用“cordova build”时【英文标题】:No Java files found which extend CordovaActivity. when use "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 标志再试一次并发布结果吗? 【参考方案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

【讨论】:

以上是关于未找到扩展 CordovaActivity 的 Java 文件。使用“cordova build”时的主要内容,如果未能解决你的问题,请参考以下文章

Java 配置 /j_spring_security_check 未找到

Azure Data Studio:未找到新安装扩展的设置/未出现在设置中

Maven 发现已完成,但未找到任何扩展

Ivy 依赖项:log4j-api 已下载但未找到 log4j-api-java9

未找到规则“导入/扩展”的 ESLint 定义

Spring安全性j_spring_security_check调用给出404未找到错误[关闭]