gpt4 book ai didi

android - ClassNotFoundException dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java :61)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:04 27 4
gpt4 key购买 nike

这个错误在 Stackoverflow 上出现过几次,我会引用这个问题中的其他问题。

我的项目是一个使用 Android Maven Plugin 的 Android 应用程序包括库,但也包括本地的一些库,因为它们不是通过 maven 提供的。我的 IDE 是 Eclipse。我用过 this tutorial mostly来配置它。我对 maven 比较陌生。

简而言之,我无法在手机上启动应用程序。启动它时,我看到了上面关于名为 SubscriptionView 的启动 Activity 的书面错误。 .整个错误跟踪如下:

07-17 15:47:42.170: E/AndroidRuntime(20071): FATAL EXCEPTION: main
07-17 15:47:42.170: E/AndroidRuntime(20071): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.dynamixsspbridge/com.example.dynamixsspbridge.SubscriptionView}: java.lang.ClassNotFoundException: com.example.dynamixsspbridge.SubscriptionView
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.access$700(ActivityThread.java:140)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.os.Handler.dispatchMessage(Handler.java:99)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.os.Looper.loop(Looper.java:137)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.main(ActivityThread.java:4921)
07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.reflect.Method.invokeNative(Native Method)
07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.reflect.Method.invoke(Method.java:511)
07-17 15:47:42.170: E/AndroidRuntime(20071): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
07-17 15:47:42.170: E/AndroidRuntime(20071): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
07-17 15:47:42.170: E/AndroidRuntime(20071): at dalvik.system.NativeStart.main(Native Method)
07-17 15:47:42.170: E/AndroidRuntime(20071): Caused by: java.lang.ClassNotFoundException: com.example.dynamixsspbridge.SubscriptionView
07-17 15:47:42.170: E/AndroidRuntime(20071): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
07-17 15:47:42.170: E/AndroidRuntime(20071): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
07-17 15:47:42.170: E/AndroidRuntime(20071): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025)
07-17 15:47:42.170: E/AndroidRuntime(20071): ... 11 more

现在,对此建议有多种解决方案:
  • Checking if one does in fact export private Libraries通过转到““构建路径”->“配置构建路径...”。2. 在“订购和导出”选项卡中,选中“Android 私有(private)库”选项。希望能工作。”我检查了该选项,无论如何还是发生了错误。
  • Make sure ProGuard does not strip classes away : 据我所知,我不使用 proguard。从我看来,必须积极使用 ProGuard,它不只是在那里......我没有。 (它说“运行 ProGuard 是完全可选的” on the android site 。)我检查了我的 project.properties 并且那里的 proguard 行被注释掉了。
  • Do not name the folder for your external libraries lib but libs .我已经为我的本 map 书馆这样做了。 Maven 库当然存在于 Maven 放置它们的任何地方。可能我可以将所有这些 jar 从 maven 仓库中放入 libs ...然后停止使用maven。虽然这可能有效,但它几乎没有提出解决方案。
  • Remove Double Libs from Build Path .这或多或少与 3 中描述的问题相同。不过,这里的重点是 “一个库不能有不同版本” .已知某些库提供其他库,因此一个库可能位于我的本地文件夹中,并由通过 maven 添加的库之一提供。我在本地包含两个库,一个不是公开的,因此如果提供一个,它将是 android-support-v4.jar。我已经删除了 jar,清理了项目并再次导出,没有任何变化。
  • Suggestions have been made, that this is actually a Eclipse problem.据说重新启动可能会有帮助,所以我做到了。无济于事。我试过删除和不删除 bingen文件夹。
  • Spelling errors
  • 使用 m2e Plugin (已经这样做了)

  • 其他没有成功的想法:

    Java 版本:我觉得可能是我使用 Java 1.5 的原因之一。但是,虽然建议使用 1.6,但 1.5 应该可以工作。切换到 1.6 也不会改变任何东西。

    通过 Maven 包含的库不会导出/索引:我看到的另一个问题是 Maven 依赖项没有显示为文件夹 bin/dexedLibs 中的 dexed 库。 .虽然我相信这会在以后成为一个问题,但我已经从项目中删除了所有使用这些库的类,但错误仍然存​​在。

    问题显然与使用 Maven 有某种关系。如果我创建一个新项目,一切正常,直到我将项目转换为 maven 项目并通过 pom.xml 添加库。 ,即使我没有使用任何库的类。

    编辑 进一步调查:通过创建另一个新项目,发现在第一个“正确的时钟->配置->转换为 maven”中,即使我更改了 pom.xml 也没有导入任何内容。 . I then "disable maven nature" and then "convert to maven" .现在所有的库都被导入了,现在发生了错误。当我包含 pom.xml 时在转换之前进入项目发生同样的错误。

    奇怪的是,如果我然后“右键单击-> maven->禁用 maven 性质”并删除所有 maven 库和文件,问题仍然存在。

    在我转换为 maven 并且 maven 库在项目中之后,所有这一切也发生在一个新的示例项目(只是由 eclipse 创建的标准 Activity 和 xml)中,所以它显然与我的代码完全无关......
    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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>DynamixSSPBridge</groupId>
    <artifactId>DynamixSSPBridge</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>DynamixSSPBridge</name>
    <properties>
    <java-version>1.6</java-version>
    </properties>
    <repositories>
    <repository>
    <id>itm-maven-repository-releases-site</id>
    <url>https://maven.itm.uni-luebeck.de/content/repositories/releases/</url>
    </repository>
    </repositories>
    <dependencies>
    <dependency>
    <groupId>com.google.android</groupId>
    <artifactId>android</artifactId>
    <version>2.3.3</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>de.uniluebeck.itm</groupId>
    <artifactId>ncoap</artifactId>
    <version>1.0.1</version>
    </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.1.1</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>9</platform>
    </sdk>
    </configuration>
    </plugin>
    </plugins>
    </build>
    </project>

    另一个想法是创建一个具有特定 android 原型(prototype)的 maven 项目,如 described here .但是,这似乎不起作用,因为我总是收到“无法从原型(prototype)创建项目”错误(见图)。创建一个非 android maven 项目是另一个糟糕的尝试,因为它不是一个 android 项目,它不解析 R.x 引用,也不解析库...

    Error message in eclipse

    有任何想法吗?

    最佳答案

    我有同样的问题。我建议你只依赖 maven 命令,不要将 IDE 用于任何事情(调试除外),因为 maven-android-plugin以自己的方式编译东西。

    安装本地jar文件

    您可以将本地库 jar 文件(对于 Maven 无法在线提供)安装到本地存储库:

    比如这里我们复制android.jar4.03无法在线访问我们机器上的本地存储库:

    mvn install:install-file \
    -Dfile=$ANDROID_HOME/platforms/android-15/android.jar \
    -DgroupId=com.google.android \
    -DartifactId=android \
    -Dversion=4.0.3 \
    -Dpackaging=jar \
    -DgeneratePom=true

    现在我们可以将它包含在 POM 中:
      <dependency>
    <groupId>com.google.android</groupId>
    <artifactId>android</artifactId>
    <version>${platform.version}</version>
    <scope>provided</scope>
    </dependency>

    Maven 将在本地存储库中查找并使用这些 jar 文件。

    设置正确的范围

    未包含类的问题(在我的情况下)是由错误引起的 <scope> POM 中的依赖项。因此,对于所有库的依赖项集 <scope>compile .

    尝试运行 mvn clean , mvn install , 和 mvn:android deploy .

    只有当您能够从 mvn 运行它时,您的 Maven 项目才是好的。没有任何 IDE 左右的命令行。

    关于android - ClassNotFoundException dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java :61),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17703692/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com