【问题标题】:Error importing Maven Android Android project to Eclipse with ADT 20使用 ADT 20 将 Maven Android Android 项目导入 Eclipse 时出错
【发布时间】:2012-07-01 06:21:00
【问题描述】:

我已将 ADT 插件更新到最新版本 (20) 和 android-sdk 工具。现在,当我尝试将现有的 Android Maven 导入 Eclipse 时,会引发异常An internal error occurred during: "Importing Maven projects". com/android/io/StreamException,并创建 eclipse 项目,但不像以前那样像 Android 项目。工作区中以前存在的(maven android)项目工作正常。

导入项目时的Eclipse完整异常跟踪如下:

!ENTRY org.eclipse.osgi 2 1 2012-06-29 19:02:34.421
!MESSAGE NLS unused message: LifecycleMappingPropertyPage_this_message in: org.eclipse.m2e.core.ui.internal.messages

!ENTRY org.eclipse.core.jobs 4 2 2012-06-29 19:03:03.953
!MESSAGE An internal error occurred during: "Importing Maven projects".
!STACK 0
java.lang.NoClassDefFoundError: com/android/io/StreamException
    at me.gladwell.eclipse.m2e.android.project.EclipseAndroidProjectFactory.createAndroidProject(EclipseAndroidProjectFactory.java:17)
    at me.gladwell.eclipse.m2e.android.project.EclipseAndroidProjectFactory.createAndroidProject(EclipseAndroidProjectFactory.java:1)
    at me.gladwell.eclipse.m2e.android.AndroidMavenProjectConfigurator.configure(AndroidMavenProjectConfigurator.java:62)
    at org.eclipse.m2e.core.project.configurator.AbstractLifecycleMapping.configure(AbstractLifecycleMapping.java:109)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:414)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.configureNewMavenProject(ProjectConfigurationManager.java:240)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.importProjects(ProjectConfigurationManager.java:156)
    at org.eclipse.m2e.core.ui.internal.wizards.MavenImportWizard$1.doCreateMavenProjects(MavenImportWizard.java:164)
    at org.eclipse.m2e.core.ui.internal.wizards.AbstractCreateMavenProjectsOperation.run(AbstractCreateMavenProjectsOperation.java:73)
    at org.eclipse.m2e.core.ui.internal.wizards.MavenImportWizard$3.runInWorkspace(MavenImportWizard.java:249)
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.ClassNotFoundException: com.android.io.StreamException
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 12 more

谁能解决?是否需要更新 m2e Android 连接器?

更新: 这是我的 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>your.company</groupId>
    <artifactId>my-android-application</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>apk</packaging>
    <name>my-android-application</name>

    <dependencies>
        <dependency>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
            <version>2.3.3</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <sourceDirectory>src</sourceDirectory>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                    <artifactId>android-maven-plugin</artifactId>
                    <version>3.2.0</version>
                    <extensions>true</extensions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                <artifactId>android-maven-plugin</artifactId>
                <configuration>
                    <sdk>
                        <!-- platform or api level (api level 4 = platform 1.6)-->
                        <platform>10</platform>
                    </sdk>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project></project>

谢谢。

【问题讨论】:

  • 确认我在这里遇到了同样的错误。
  • 我可以确认还有 5 个人在几个 SO(Windows XP、Windows 7 和 Mac OS)中出现相同错误

标签: android eclipse maven adt


【解决方案1】:

这是由于 ADT API 更改导致的 m2e-android 插件的已知问题:

https://github.com/rgladwell/m2e-android/issues/89

请耐心等待我们找到解决办法。


更新:今天发布的新 0.4.2 版本修复了这个问题,请运行 Eclipse 更新(帮助 -> 检查更新),如果这能解决您的问题,请告诉我。

【讨论】:

  • 非常感谢!我正在搜索它是否是一个已知问题,但我找不到它。
【解决方案2】:

编辑:与其这样做,您现在最好从 github 获取 Ricardo 的更新项目,切换到 adt-20 分支,使用 Maven 构建,如所述卸载 M2E 连接器下面,并从 me.gladwell.eclipse.m2e.android.update/target/repository 安装新的 M2E 连接器作为本地存储库,也如下所述。谢谢,里卡多!


我遇到了这个问题,无法构建我的项目。我解决它的唯一方法是将 ADT 降级到 18.0.0。我找不到通过 SDK 管理器等执行此操作的方法,因此结果证明这是一种考验——尽管我很可能没有以最明智的方式做到这一点!无论如何,我想我会发布我所经历的,以防它帮助任何人。我遗漏了无数次 Eclipse 重启。 :)

这是在 Linux 上的 Eclipse 3.7 上。

  • 获取 ADT 邮编:http://dl.google.com/android/ADT-18.0.0.zip
  • 为您的操作系统获取 Android SDK 工具存档:http://dl.google.com/android/android-sdk_r18-linux.tgz(将 linux.tgz 替换为 windows.zip 或 macosx.zip - 抱歉,Stack Overflow 仅允许我在帖子中包含两个链接!)。
  • 禁用自动软件更新:窗口 -> 首选项 -> 安装/更新 -> 自动更新,取消选中“自动查找新更新并通知我”。
  • 卸载Android SDK Tools:Window -> Android SDK Manager,勾选Android SDK Tools,点击“Delete 1 package”。
  • 卸载 ADT:帮助 -> 安装新软件 -> 已经安装了什么? -> 已安装的软件,选择所有 Android* 组件和 Android Configurator for M2E,然后点击“卸载”。
  • 解压 ADT-18.0.0.zip 并安装:帮助 -> 安装新软件 -> 添加 -> 本地并浏览到您解压它的位置。为本地存储库命名并单击“确定”,然后从“使用”下拉列表中选择它并从中安装可用的软件。
  • 将工具目录从 android-sdk_r18 存档解压到您的 android-sdks 目录中。
  • 安装 Android M2E 连接器:首选项 -> Maven -> 发现,单击“打开目录”,然后选择连接器。如果出现提示,请取消选择任何 ADT 20.0 功能。

【讨论】:

  • 感谢您分享这个有用的答案! :)
  • 谢谢!效果很好,但现在仍在等待 maven 插件修复。
  • 感谢本指南,但只有一个问题:如何安装 Android m2e 连接器 0.4.1 之前的版本?这是必需的,因为 0.4.1 需要安装 ADT 20.0。
  • 对我来说 0.4.1 似乎适用于 ADT 18.0.0 - 只需选择 M2E 连接器,然后在出现提示时取消选择 ADT 20 依赖项。
  • 今天发布的新 0.4.2 版本修复了这个问题,请运行 Eclipse 更新(帮助 -> 检查更新),如果这能解决您的问题,请告诉我。
【解决方案3】:

现在安卓 maven 连接器已修复,可与 ADT 20+ 一起使用,只需从以下更新站点安装更新:http://rgladwell.github.com/m2e-android/updates/master/

【讨论】:

  • 这可能不应该是这个问题的公认答案:您不应该依赖主/快照更新站点,这是未经测试的,可能会产生不可预知的结果。
【解决方案4】:

只需打开您的文件。 XML 和“图形布局”下方的选项卡(在 Eclipse 的情况下)。 您仍然可以找到位于右上角的 Android 图标,该图标详细说明了在我的案例中使用的版本是 18 版,我选择了 17 版并且错误消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2023-04-06
    • 1970-01-01
    • 2023-03-03
    • 2017-08-13
    相关资源
    最近更新 更多