【问题标题】:android studio adding extern jar libraryandroid studio添加外部jar库
【发布时间】:2013-11-26 16:25:54
【问题描述】:

我想添加外部 jar 库commons-jexl-2.1.1.jar。我将 jar 复制到 libs/ 文件夹并执行 Add as library... 菜单点。我在代码中没有收到任何错误,并且一切似乎都正常,但是在编译和启动应用程序时,我在这一行 private JexlEngine jexl = new JexlEngine(); 上收到错误 java.lang.NoClassDefFoundError: org.apache.commons.jexl2.JexlEngine 有谁知道我错过了什么?

【问题讨论】:

    标签: jar android-studio


    【解决方案1】:

    不幸的是,这个菜单命令对基于 Gradle 的项目做错了,我认为你的项目是这样。 (基于 Gradle 的项目是您在 Android Studio 中创建新项目时获得的)。我已提交错误https://code.google.com/p/android/issues/detail?id=62249 请求为这些项目正确实施此菜单命令,或者至少在实施之前禁用它以防止混淆。

    与此同时,您可以通过“项目结构”对话框添加外部 JAR 依赖项,这会将适当的条目添加到您的 build.gradle 构建文件中。选择文件菜单 > 项目结构,然后单击左侧的“模块”条目。从中间列表中选择您的模块,然后单击右侧的 Dependencies 选项卡。然后单击底部的 + 按钮以添加新的依赖项。屏幕截图在这里:

    + 菜单有一个“文件依赖”选项(如图)。您将获得一个文件选择器,可让您选择 jar 文件。

    如果您的依赖项是可以在 Maven 中找到的,您可能会发现指定 Maven 坐标更方便;这样,构建系统将自动下载依赖项,您不必手动下载和存储 JAR。要进行设置,请从 + 菜单中选择“Maven 依赖项”。您将看到一个对话框,您可以在其中搜索为您的库找到正确的 Maven 坐标。在您的情况下,这些坐标将是“org.apache.commons:commons-jexl:2.1.1@jar”

    如果您更喜欢手动编辑构建文件,请在完成“项目结构”对话框更改后查看您的 build.gradle 文件,看看它做了什么。

    在 Android 中使用 Gradle 的文档位于 http://tools.android.com/tech-docs/new-build-system

    【讨论】:

    • 我的项目结构窗口看起来有点不同,左侧没有 Mudules 选项,并且选择 file dependencies 的 + 也不存在!?
    • 您是手动创建项目还是使用新建项目向导创建的?如果您手动创建它并且它具有比向导创建的项目更扁平的目录结构,您可能会遇到code.google.com/p/android/issues/detail?id=62170。在这种情况下,您可以通过在您的 dependencies 块中添加 compile 'org.apache.commons:commons-jexl:2.1.1@jar' 语句手动将依赖项添加到您的 build.gradle 文件中
    • 我已经在我的 build.gradle 文件中插入了compile files('libs/commons-jexl-2.1.1.jar'),也添加了你的行,但我仍然收到同样的错误...我使用 File->New Project 创建了项目
    • 根据您的屏幕截图,您使用的是非常旧版本的 Android Studio (0.2.13)。尝试升级到 0.3.5。该版本本身存在一些我们希望在 0.3.6 中解决的问题,我们正在努力解决这些问题。
    【解决方案2】:

    courtesy The App Chaps 我一直在为同样的事情苦苦挣扎好几个小时,试图让 Gson jar 发挥作用。我终于破解了——这是我采取的步骤:

    1. 将 Gson jar(在我的情况下为 gson-2.2.4.jar)放入 libs 文件夹中
    2. 右键单击它并点击“添加为库”
    3. 确保compile files('libs/gson-2.2.4.jar') 在您的build.gradle 文件中
    4. 做一个干净的构建(你可能可以在 Android Studio 中很好地做到这一点,但要确保我在终端中导航到我的应用程序的根文件夹并输入 gradlew clean。我在 Mac OS X 上,命令您的系统可能会有所不同

    在我完成上述三个之后,它开始正常工作。我认为“添加为库”步骤是我之前错过的步骤,并且在我清理它之前它也不起作用。

    [编辑 - 添加了 build.gradle 步骤,正如其他人指出的那样,这也是必要的]

    【讨论】:

      猜你喜欢
      • 2015-11-28
      • 1970-01-01
      • 2015-02-16
      • 2013-09-02
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多