Android/Eclipse:从构建路径中删除/src文件夹

Android/Eclipse:从构建路径中删除/src文件夹,android,eclipse,buildpath,Android,Eclipse,Buildpath,这听起来可能是个愚蠢的问题,但当我从“构建路径”(只剩下MainActivity/gen)中删除Android项目的/src文件夹时,会发生什么呢?我仍然可以编译和运行项目,那么构建路径做什么呢 背景:我对将maven构建的项目导入Eclipse有点疯狂。它有/src/main/package类型的文件夹结构,所以当我导入它时,所有声明的包名都不匹配(显然是一个众所周知的问题)。我的第一次尝试是在导入项目之前在文件夹结构中将包向上移动(直接移动到/src),但这给了我很多其他问题(关于导入其他包

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

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

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

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

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文件夹,gen文件和apk都是,并且它们是从src文件构建的。据我所知,这是一种级联构建。我可能错了。不过我对maven没有太多经验,所以我无法回答其余的问题。希望其他人能告诉你。祝你好运

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

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

关于maven,您有两种选择:

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

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

然后使用eclipse“资源管理器”中的“导入”菜单将maven项目导入eclipse

然后,您应该能够通过两种方式进行构建:

在CLI上使用“mvn”目标


在eclipse中

如果您可以添加一些关于非常奇怪的运行时问题的详细信息,这些信息可能会帮助人们确定问题是否与正在删除的src文件夹有关。请使用
File-Import…-Maven-Existing Maven Projects
要导入现有的mavenized Android项目,请查看如何获取所需的Eclipse插件。您应该在出现运行时错误的地方发布日志,可能是由于清单文件
ClassNotFoundException
中的声明造成的,您正在外部JAR中查找您的类?@Shark这正是我不理解的部分。“您创建了一个“空apk”,其中您只能访问资源:)“我认为这不对,因为我可以编译和运行应用程序。。。