为Android项目创建自己的jar库时出错

2024-02-22

目前我正在研究如何在 Android Studio 中创建 jar 库的基础知识。

我跟着如何从 Android Studio 项目中生成 .jar https://stackoverflow.com/a/21713954/3022836 and 如何从 android studio 创建 jar 文件 https://stackoverflow.com/questions/30781918/how-to-create-a-jar-file-from-android-studio教程。 并完成了第一个教程中描述的每个步骤。

但是,当我构建并运行这个库项目时,它向我显示以下错误

错误:任务“:app:preDexDebug”执行失败。 com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理'命令'C:\ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe''以非完成零退出值 1

我在 SO 中研究了这个问题,但这些问题对我根本没有帮助。对我来说这不是内存问题,因为所有其他应用程序都运行得很好。虽然我的项目没有完美编译,但我仍然从库文件夹中获取了库 jar 文件,当我在其他项目中将该 jar 导入为库时,我收到了相同的错误消息。

所以我认为我在这里遗漏了一些关键点。如果有人遇到类似的问题或可以帮助我,请给出您的建议。

如果您想让我发布任何代码,请告诉我,我会这样做,谢谢。

我只是添加一个java库模块并添加一个非常简单的Multiplication那里有类(检查下面的代码)。然后将该库模块添加为我的项目中的库。图书馆代码

public class Multiplication {

    public double multiply(int num1, int num2){
        return num1*num2;
    }
}

活动代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    edt1 = (EditText)findViewById(R.id.et1);
    edt2 = (EditText)findViewById(R.id.et2);
    btn  = (Button)findViewById(R.id.btn);
    tv = (TextView)findViewById(R.id.tvRes);

    multiplication = new Multiplication();

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            double res = multiplication.multiply(Integer.parseInt(edt1.getText().toString()),Integer.parseInt(edt2.getText().toString()));

            tv.setText(Double.toString(res));
        }
    });

构建.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 11
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile files('D:/Work_New/MyApplication/libs/mylibjar.jar')
}

完整的错误日志

Information:Gradle tasks [:app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:mylibjar:compileJava UP-TO-DATE
:mylibjar:processResources UP-TO-DATE
:mylibjar:classes UP-TO-DATE
:mylibjar:jar UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72221Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42221Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava UP-TO-DATE
:app:preDexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
    at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
    at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
    at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
    at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
    at com.android.dx.command.dexer.Main.processClass(Main.java:704)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
    at com.android.dx.command.dexer.Main.access$300(Main.java:83)
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:632)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)
...while parsing com/MultiplicationTest/Multiplication.class
1 error; aborting
Error:Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_60\bin\java.exe'' finished with non-zero exit value 1

虽然当我编译项目时它没有显示任何错误,但它显示了我提到的上述错误。


Update 2

根据日志,您使用 Java 1.8 构建 *.jar。 Android支持的java最高版本是1.7。因此,您必须将源代码兼容性设置为 1.7 并重建 jar 文件。

如果您不是从 gradle(或 Android Studio)构建此 jar,则需要更改 JDK 版本(文件 -> 项目结构 -> SDK 位置 -> JDK 位置)。

对于 gradle 模块,请参阅“更新 1”


Update 1

对于你的java模块(你试图从中获取jar)放置这些行:

apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7

尝试将下一个代码放入 Android 模块的 gradle 文件中:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为Android项目创建自己的jar库时出错 的相关文章

  • 如何以编程方式在 Android 中的特定 firebase FCM 注册令牌上发送推送通知

    我想知道有什么方法可以在特定的 FCM 注册令牌 设备令牌 上以编程方式发送推送通知 我已经实现了群聊 但陷入了一对一的聊天 我根本不想使用任何网络服务或任何后端 因为我在我的应用程序中使用 Firebase 数据库和存储作为后端 我想将上
  • 如何访问SD卡并返回特定格式的文件并进行数组?

    我需要访问SD卡并返回一些不同格式的文件 该位置将由用户输入 我如何以编程方式执行此操作 西蒙迪德 我相信这就是您正在寻找的 访问SD卡 在android中从sdcard读取特定文件 https stackoverflow com ques
  • Android 上的推送通知:IBM MQTT

    我对 Android 环境非常陌生 必须使用上给出的 wmqtt jar 示例应用程序来设置客户端http www 01 ibm com support docview wss http www 01 ibm com support doc
  • 使用 javax.mail 和 CentOS 的邮件服务器

    我有一个 Java 程序 安装在一台旧的 Ubuntu 机器上 并使用 javax mail 发送邮件 然而 那台机器宕机了 我现在在新的 CentOS 机器上运行相同的 Java 应用程序 但是 当我尝试使用 mail smtp host
  • 从 Java 调用 Python 代码时出现问题(不使用 jython)

    我发现这是从 java 运行 使用 exec 方法 python 脚本的方法之一 我在 python 文件中有一个简单的打印语句 但是 我的程序在运行时什么也没做 它既不打印Python文件中编写的语句 也不抛出异常 程序什么都不做就终止了
  • 序言中不允许引用

    请帮我找到这个异常的原因 我使用以下罐子 core renderer jar itext paulo 155 jar 第一个文档 xhtml lt xml version 1 0 encoding UTF 8 gt lt DOCTYPE h
  • java3d 中的面部着色

    使用java3d 如何不在每个顶点基础上着色 而是在每个面基础上着色 我尝试学习 java3d 但我生成的 Shape3d 看起来并不符合预期 我想用不同的颜色给不同的三角形着色 但我不知道该怎么做 纹理看起来有点大材小用 而且我根本没有掌
  • 从 RxAndroid 1.x 迁移到 2.x(包括 RxJava)

    我有一个运行 RxAndroid 1 x 的项目 一切正常 我正在尝试迁移到 2 x 版本 我的等级文件 dependencies compile fileTree dir libs include jar compile com andr
  • 方向更改时视图高度/宽度值错误?

    我实现了 onConfigurationChanged 来读取方向配置更改时视图高度和宽度的值 Override public void onConfigurationChanged Configuration newConfig supe
  • 如何限制 Android 设备网络速度以进行测试

    我正在测试一个 Android 应用程序 该应用程序在低质量网络上管理其内容时遇到一些问题 我无法验证问题是否仍然存在 因为以我家的网络速度 120mb s 在我设法开始复制路线之前 所有内容都已经下载完毕 在这种情况下 不能选择使用 An
  • 使用 overridePendingTransition 时,在被调用的 Activity 中修改 UI 视图非常慢

    前几天更新的时候遇到了一个问题Action Bar基于结果的菜单图标AsyncTask 根据 AsyncTask 结果立即更新操作栏菜单项 https stackoverflow com questions 29239804 updatin
  • 如何在 Android 设备(平板电脑和手机)方向更改时获得正确的窗口宽度

    我正在尝试使用 jquery 函数计算 Android 设备方向变化时的窗口宽度 window outerWidth true 此计算给出了两个方向变化的正确宽度iphone and ipad但在安卓中不行 如果我最初以横向模式或纵向模式加
  • 如何迭代SparseArray?

    有没有办法迭代 Java SparseArray 适用于 Android 我用了sparsearray通过索引轻松获取值 我找不到 看来我找到了解决方案 我没有正确注意到keyAt index 功能 所以我会这样做 for int i 0
  • 如何实现再次播放功能?

    我希望在游戏结束时得到提示 如果我还想再玩一次的话 并使用 Y N 输入 退出游戏或重复游戏 我该如何以最有效的方式解决这个问题 编辑 描述资源路径位置类型 类型 Main Main java ScaredyCat src se grupp
  • Spring Boot 健康执行器 - 什么时候上线?

    我找不到任何有关 Springs Health Actuator 何时返回 UP 状态的文档 你能依靠一切吗 Components正在初始化 会不会 Controller准备好满足请求了吗 为了测试应用程序上下文是否已加载 您可以执行此自定
  • 如何使用自定义转换器访问 jOOQ 生成的例程字段作为值?

    我在访问生成例程的字段时遇到问题PL pgSQL 用户定义函数 返回JSON 数据类型结果 已经提到this https stackoverflow com q 62535195 6805866问题 这是我的结果get all orders
  • Spring Data JPA 和 Exists 查询

    我正在使用 Spring Data JPA 使用 Hibernate 作为我的 JPA 提供程序 并想要定义一个exists附加 HQL 查询的方法 public interface MyEntityRepository extends C
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr
  • 尝试访问从资产复制到数据\数据\的数据库中的DatabaseHelper时出现空指针异常

    我有一个数据库助手类 代码如下 这个助手的类任务是将数据库从应用程序附带的资产文件夹复制到我的应用程序的 data data 中 以便我可以使用它 一旦我将数据库放入 data data 我能够 我想添加它并执行 CRUD 操作 并且该数据
  • 文件构造函数说明

    我无法理解以下文件构造函数 public File String parent String child and public File File parent String child 参数有什么作用parent and child该文件

随机推荐

  • DateTime->format(epoch) 返回错误的日期

    我正在开发一个项目 但在将纪元时间格式化为人类可读时间时遇到问题 我有以下纪元时间1428512160当我把它通过 epochconverter com 时 我得到了人类时间08 04 2015 17 56 00 GMT 1 00 DST正
  • 页码和偏移量

    我正在学习不同类型的内存管理 我不明白在虚拟地址中具有偏移位的意义 以及为什么页面大小是由2 我的主要困惑是 给我一个在指令中使用偏移量来访问某个虚拟地址的示例 我的第二个困惑是 通常的说法是 如果逻辑地址的大小是2 m页面大小是2 n 则
  • 如何使用h5py将数据写入复合数据?

    我知道在c我们可以使用轻松构建复合数据集struct逐块键入并分配数据 我目前正在实施类似的结构Python with h5py import h5py import numpy as np we create a h5 file f h5
  • Intellij Git 命令不起作用

    我的 Intellij Java 项目中的 git 集成存在问题 当我尝试执行提交时 无论我是否更改了任何内容 总是会出现相同的消息 未检测到任何更改 此外 当我试图拉东西时 没有任何动作 在 Intellij 的版本控制选项卡中 只有一条
  • 从startup.cs asp.net core重定向用户

    我有一个要求 我想检查数据库是否已连接 我有相应的类 如果此类的方法返回 false 那么我想重定向到将进行设置的数据库页面 视图 我有Asp Net核心身份 我想在 EF core 尝试连接到数据库之前检查此情况 我尝试使用以下命令 但返
  • setText 时不能使用 Frame.origin

    我正在使用下一个代码来淡出并向上滚动我的文本字段 但我刚刚注意到当我使用类似的东西时 textField setText something or textField resignFirstResponder 我失去了向上滚动的能力 任何人
  • JFreechart X和Y轴缩放

    可以在jfreechart中设置轴刻度值吗 例如 我想要 X 轴刻度为 10 Y 轴刻度为 1 您设置了TickUnit 如果您使用的是XYPlot尝试这个 XYPlot plot chart getXYPlot NumberAxis xA
  • 为什么我的一些 HTML 内部链接有效,而另一些则无效?

    救命 我对这个世界完全陌生 我正在首页上制作一个菜单栏 并链接到网站上的其他页面 以下是代码示例 ul li a href About a li li a href The Therapist a li li a href Pay what
  • 视网膜图像中的血管分割

    我正在尝试在视网膜图像中追踪血管 目前我正在使用 cv2 的阈值函数来使血管与周围视网膜的对比度更高 from matplotlib import pyplot as plt import cv2 img cv2 imread misc i
  • 并发 C++ 程序中的可见性

    我知道在 Java 中 从另一个线程访问成员时不能保证成员的可见性 含义是访问线程可能会看到该成员的窃取值 因为缓存尚未刷新到主内存 我想知道C 是否也是如此 也在 C 11 中 如果是这样 你如何在 C 中解决这个问题 在Java中 可以
  • backbone.js 获取缓存的结果

    我在以下backbone js控制器的索引操作中使用fetch App Controllers PlanMembers Backbone Controller extend routes index index function var p
  • Linq 中的多个 WHERE 子句

    我是 LINQ 新手 想知道如何执行多个 where 子句 这就是我想要实现的 通过过滤掉某些用户名来返回记录 我尝试了下面的代码 但没有按预期工作 DataTable tempData DataTable grdUsageRecords
  • PHP $_GET 未从 Web 浏览器填充 URL 查询参数

    我遇到了一个奇怪的问题 GET and REQUEST 变量为空 即使正在传递参数 我的 PHP 代码 echo SERVER REQUEST URI echo print r REQUEST echo print r GET Output
  • MVVM light - 如何访问其他视图模型中的属性

    我正在使用 mvvm light 构建 Silverlight 应用程序 是否有代码片段显示如何从另一个视图模型或用户控件的隐藏代码中访问视图模型的属性或命令 我想这很简单 但我不知何故错过了一些东西 Ueli 您可以使用 Messenge
  • 控制器内的 SignalR 身份验证?

    我正在使用 SignalR 但我似乎无法掌握身份验证来构建用于公共聊天和安全聊天的演示应用程序 有一个聊天室 我想演示经过身份验证的用户将收到公共消息and经过身份验证的用户消息 身份验证是使用现有的 MVC 3 Internet 应用程序
  • 编写无需 requirejs 即可运行的 Requirejs 模块

    我想以某种方式创建我的模块 它们可以与 requirejs 一起使用 也可以不与 requirejs 一起使用 如果没有 require js 它们应该正常工作 所以我必须确保它们正确加载 比如以正确的顺序放置脚本标签 所以 jQuery
  • 你好,我刚刚用 pip 安装了 requests 但无法导入它

    例如我的代码是 import requests r requests get https www python org r status code 结果是 Traceback most recent call last File C Use
  • 添加多个自定义http请求标头之谜

    HttpGet request new HttpGet https 192 168 1 140 8732 我想知道为什么我只能成功发送自定义标头 UserName 和 AuthToken 如果我执行以下操作 request setHeade
  • 使用一些曲线球在 Swing JTextArea 上强制执行最大字符数

    我正在尝试向 Swing JLabel 和 JTextArea 添加功能 以便 用户只能在文本区域输入 500 个字符 最多 标签包含一条字符串消息 告诉用户还剩下多少个字符 每次击键或退格后 当组件初始化时 标签显示 最多 500 个字符
  • 为Android项目创建自己的jar库时出错

    目前我正在研究如何在 Android Studio 中创建 jar 库的基础知识 我跟着如何从 Android Studio 项目中生成 jar https stackoverflow com a 21713954 3022836 and