4

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

在此处输入图像描述

4

2 回答 2

3

不幸的是,这个菜单命令对基于 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

于 2013-11-14T00:37:40.337 回答
1

礼貌 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其他人指出的必要步骤]

于 2014-04-07T10:10:42.673 回答