【问题标题】:Android/ Eclipse: Removing /src folder from build pathAndroid/ Eclipse:从构建路径中删除 /src 文件夹
【发布时间】:2013-02-24 05:33:00
【问题描述】:

这听起来像是一个愚蠢的问题,但是当我从“构建路径”中删除 Android 项目的 /src 文件夹时会发生什么(只剩下 MainActivity/gen)?我仍然可以编译和运行项目,那么构建路径是做什么的呢?

背景:我对将 maven 构建的项目导入 Eclipse 有点疯狂。它具有 /src/main/package 类型的文件夹结构,因此当我导入它时,所有声明的包名称都不匹配(显然是一个众所周知的问题)。我的第一次尝试是在导入项目之前将包在文件夹结构中向上移动(直接到 /src),但这给了我很多其他问题(关于导入其他包)。

第二次尝试是(在关于 SO 的几个问题上建议这样做)只是从构建路径中删除 /src 文件夹,瞧,包声明工作并且在 Eclipse 中没有更多显示的问题,但我遇到了一个非常奇怪的问题在运行时,我不知道它是否与我从构建路径中删除 /src 文件夹有关。

编辑:这是运行应用程序时的错误。我应该补充一点,MyApplication 不是 Activity,但它扩展了 Application(用于存储全局变量)。谷歌地图用于该项目,但不是在第一个活动中。

02-20 14:39:34.781: E/AndroidRuntime(1479): FATAL EXCEPTION: main
02-20 14:39:34.781: E/AndroidRuntime(1479): java.lang.RuntimeException: Unable to instantiate application com.example.myapp.MyApplication: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MyApplication" on path: /system/framework/com.google.android.maps.jar:/data/app/com.example.myapp-1.apk
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.LoadedApk.makeApplication(LoadedApk.java:504)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4364)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.ActivityThread.access$1300(ActivityThread.java:141)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1294)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.os.Looper.loop(Looper.java:137)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.ActivityThread.main(ActivityThread.java:5039)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at java.lang.reflect.Method.invokeNative(Native Method)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at java.lang.reflect.Method.invoke(Method.java:511)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at dalvik.system.NativeStart.main(Native Method)
02-20 14:39:34.781: E/AndroidRuntime(1479): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MyApplication" on path: /system/framework/com.google.android.maps.jar:/data/app/com,example.myapp-1.apk
02-20 14:39:34.781: E/AndroidRuntime(1479):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.Instrumentation.newApplication(Instrumentation.java:968)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.LoadedApk.makeApplication(LoadedApk.java:499)
02-20 14:39:34.781: E/AndroidRuntime(1479):     ... 11 more

【问题讨论】:

  • 如果您可以添加一些关于您非常奇怪的运行时问题的详细信息,这可能有助于人们确定问题是否与被删除的 src 文件夹有关。
  • 使用File - Import... - Maven - Existing Maven Projects导入已有的mavenized Android项目,查看this answer了解如何获取所需的Eclipse插件。
  • 你应该在出现运行时错误的地方发布日志,可能是由于清单文件中的声明
  • ClassNotFoundException,您正在外部 JAR 中寻找您的课程?
  • @Shark 这正是我无法理解的部分。

标签: android eclipse buildpath


【解决方案1】:

“当我从“构建路径”中删除 Android 项目的 /src 文件夹时会发生什么(只留下 MainActivity/gen)?”

您创建一个“空apk”,您只能访问资源:)

关于maven,你有两种选择:

  • 使用 maven 源结构并告诉 Eclipse 源在哪里。将项目导入为“现有 Android 代码”,然后转到 Java 构建路径,删除“src”文件夹并添加文件夹“src/main/java/”和“src/test/java”。
  • 使用 eclipse 默认包结构并告诉 maven 源在哪里。在您的 pom.xml 中,添加以下指令以告诉 maven 它应该在哪里查找源:<sourceDirectory>src</sourceDirectory>

【讨论】:

  • “你创建了一个“空apk”,你只能访问资源:)”我不认为这是正确的,因为我可以编译和运行应用程序......
【解决方案2】:

为了回答您的部分问题,我相信无论是否构建了 src 文件夹,gen 文件和 apk 都是,并且它们是从 src 文件构建的。据我了解,这是一种级联构建。我可能是错的。我对maven没有太多经验,所以我无法回答其余的问题。希望别人可以告诉你。祝你好运!

【讨论】:

    【解决方案3】:

    为什么不在 Eclipse 中安装“m2e”

    然后使用 eclipse 'explorer' 中的 'import' 菜单将 maven 项目导入 eclipse。

    那么您应该能够以两种方式构建:

    在 CLI 上使用“mvn”目标

    在日食中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-26
      • 2016-10-12
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      相关资源
      最近更新 更多