跨进程发送对象在解组时抛出 Class not found

2024-01-08

我正在编码和android应用程序有2个进程,一个显然是处理所有UI事物和其他事物的主进程,另一个进程托管处理网络(套接字)监听和其他事物的服务。

为了跨两个进程进行通信,我使用 Messenger 方法,并且在需要发送自定义 java 对象之前效果很好。这个java类实现了Parcelable接口,它允许Messenger跨进程边界发送java对象。

这是我想要发送的 java 类的示例。

package com.locator.carlocator.models;

import android.os.Parcel;
import android.os.Parcelable;

public class Phone implements Parcelable {

    public String number;
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }


    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.number);
        dest.writeString(this.name);
    }

    public Phone() {
    }

    private Phone(Parcel in) {
        this.number = in.readString();
        this.name = in.readString();
    }

    public static final Parcelable.Creator<Phone> CREATOR = new Parcelable.Creator<Phone>() {
        @Override
        public Phone createFromParcel(Parcel source) {
            return new Phone(source);
        }

        @Override
        public Phone[] newArray(int size) {
            return new Phone[size];
        }
    };
}

这就是我创建要发送的对象实例的方式,这是由收到的消息触发的,然后发送到主进程。下一个代码块在一个服务上运行,该服务在不同的进程上运行,并使用内置 API 的 Messenger IPC 进行通信。

Phone phone = new Phone();
phone.setNumber("6000-0006");
phone.setName("Alex Sanchez");

data = new Bundle();
data.setClassLoader(Phone.class.getClassLoader());
data.putParcelable("key-phone", phone);

Message msg = Message.obtain(null, MSG_A_REQUEST);
msg.setData(data);
notifySubscribers(msg);   // this method perform the send message.

sender方法是如何实现的?

private void notifySubscribers(Message msg) {
    for(Messenger subscriber : serviceSubscribers) {
        try {
            subscriber.send(msg);
        } catch (RemoteException e) {
            Log.e(TAG, "Subscriber not available");
            e.printStackTrace();
        }
    }
}

这是堆栈跟踪的一部分:

00:53:05.382 21542-21542 E/Parcel: Class not found when unmarshalling: com.locator.carlocator.models.Phone
                                     java.lang.ClassNotFoundException: com.locator.carlocator.models.Phone
                                         at java.lang.Class.classForName(Native Method)
                                         at java.lang.Class.forName(Class.java:309)
                                         at java.lang.Class.forName(Class.java:273)
                                         at android.os.Parcel.readParcelableCreator(Parcel.java:2281)
                                         at android.os.Parcel.readParcelable(Parcel.java:2245)
                                         at android.os.Parcel.readValue(Parcel.java:2152)
                                         at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)
                                         at android.os.BaseBundle.unparcel(BaseBundle.java:221)
                                         at android.os.Bundle.getParcelable(Bundle.java:755)
                                         at com.locator.carlocator.MainActivity$IncomingHandler.handleMessage(MainActivity.java:2255)
                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                         at android.os.Looper.loop(Looper.java:135)
                                         at android.app.ActivityThread.main(ActivityThread.java:5343)
                                         at java.lang.reflect.Method.invoke(Native Method)
                                         at java.lang.reflect.Method.invoke(Method.java:372)
                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:702)
                                      Caused by: java.lang.ClassNotFoundException: Didn't find class "com.locator.carlocator.models.Phone" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]

None

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

跨进程发送对象在解组时抛出 Class not found 的相关文章

  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • Android Studio 0.4.3 Eclipse项目没有gradle

    在此版本之前 在 Android Studio 中按原样打开 Eclipse 项目似乎很容易 无需任何转换 我更喜欢 Android Studio 环境 但我正在开发一个使用 eclipse 作为主要 IDE 的项目 我不想只为这个项目下载
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • Python 中有“multimap”实现吗?

    我是 Python 新手 并且熟悉以下的实现多重地图 http en wikipedia org wiki Multimap in other http www sgi com tech stl Multimap html 语言 http
  • 无法在 PHP 中注销[重复]

    这个问题在这里已经有答案了 我正在尝试用 PHP 制作注册 登录表单 但无法注销 我不断收到以下错误 致命错误 未捕获的 ArgumentCountError 函数 USER construct 的参数太少 第 4 行在 C xampp h
  • 防止 CSS 工具提示超出页面/窗口

    我有一个仅 CSS 的工具提示 它加载span作为工具提示 当您hover链接 然而 这是使用 CSS 定位的 但如果链接靠近页面顶部或侧面 则工具提示会离开页面的侧面 顶部 有没有办法使用 css 来进行此更改 或者我必须依赖 JS 我已
  • 从 X 值获取 .NET 图表系列中的 Y 值

    使用 C 和 NET 图表 我正在尝试绘制多个波形图 并且希望将鼠标移过图表区域 并让工具提示在该 X 值位置处显示图表中每个系列的 Y 值 at xValue 12 3 2
  • 在 R 中将 UTM 转换为纬度/经度

    我有一个包含 9 000 多个 UTM 坐标的 csv 文件 我想将其转换为十进制 但遇到了一些麻烦 我搜索了此处和其他地方发布的几篇帖子 但似乎找不到将我的 UTM 集转换为可用且准确的纬度 经度的解决方案 我基本上有两个问题 1 有人看
  • 为什么 R CMD BATCH 中选项的行为不同(error = utils::dump.frames)?

    这是这个问题的后续 R CMD BATCH 或 Rscript 错误停止 https stackoverflow com questions 23327746 r cmd batch or rscript with stop on erro
  • 在 Ubuntu 中不使用 sudo 安装 NodeJS

    我已经关注了节点和 npm in 30 seconds sh https gist github com isaacs 579814 早些时候 我曾经使用 Yeoman 和 Bower 以及 NodeJS 创建 AngularJS 应用程序
  • Meteor:如何判断数据库何时准备就绪?

    我想在页面加载后尽快执行 Meteor 集合查询 我尝试的第一件事是这样的 Games new Meteor Collection games if Meteor isClient Meteor startup function conso
  • 如何修改 ASP.NET 中 div 的代码隐藏文件中的 CSS 样式?

    我正在尝试根据从 aspx 页面代码后面的数据库表中获取的信息来修改 div 的 CSS 样式属性 以下基本上是我想要做的 但我遇到了错误 Aspx div Test div 背后代码 testSpace Style display non
  • WPF 中的动画背景控件?

    在我的 WPF 应用程序中 我想要一个类似于以下的环境动画背景媒体中心 http en wikipedia org wiki Windows Media Center的背景 有没有免费的控件可以提供此功能 使背景动画化的一种方法是 还可以将
  • 在数据框列中查找字典的值并修改它

    我现在处理数据帧和字典 我有一个问题 我有一本字典 Fruits BN Banana LM Lemon AP Apple etc 还有一个数据框 Stock Fruit Price 0 Sweet Mango 1 1 Green Apple
  • Python/请求:requests.exceptions.SSLError:[SSL:SSLV3_ALERT_HANDSHAKE_FAILURE]

    在使用 MacOS X 的 Python 中 尝试向网站发出 POST 请求 但出现以下错误post response session post post url data post payload headers post headers
  • 文本超出 JTextArea

    我正在尝试用 Java 做一些事情 这需要我在 ScrollPane 中有一个 JTextArea 我是这样定义它们的 private JTextArea longestparagraph new JTextArea JScrollPane
  • 我正在为我的团队编写编程思维规则:你的是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • 用jQuery实现文件上传进度条

    我正在尝试在我的项目中实现 AJAX 文件上传功能 我为此使用 jQuery 我的代码使用 AJAX 提交数据 我还想实现一个文件上传进度条 我怎样才能做到这一点 有什么方法可以计算已上传的数量 以便我可以计算上传的百分比并创建进度条 我只
  • 使用 SQL 查询统计单词出现次数

    我有两张桌子 Table1 ID SENTENCE 1 The shoes are good shoes 2 There is a tree 3 This is nice nice nice Table2 ID WORD 1 The 1 s
  • 三元组存储和图数据库有什么区别?

    有三元组 语义数据库 也有通用图形数据库 两者都基于通过关系将一个 项目 链接到另一个 项目 的类似概念 Triplestore 支持 RDF 并由 SPARQL 查询 但此类附加组件也可以 并且已经 在通用图形数据库之上实现 使您更喜欢语
  • 如何将 WebDev.WebServer.exe 安装为独立应用程序?

    如何将 Visual Studio Web 开发服务器 WebDev WebServer exe 安装为独立应用程序 这样我们的网页设计人员就可以从 SVN 获取最新的代码 然后运行 MSBuild 批处理文件来构建代码 然后使用 Web
  • 如何使用 Mockito 验证未调用特定方法?

    如何验证一个方法是not调用对象的依赖关系 例如 public interface Dependency void someMethod public class Foo public bar final Dependency d 通过 F
  • 跨进程发送对象在解组时抛出 Class not found

    我正在编码和android应用程序有2个进程 一个显然是处理所有UI事物和其他事物的主进程 另一个进程托管处理网络 套接字 监听和其他事物的服务 为了跨两个进程进行通信 我使用 Messenger 方法 并且在需要发送自定义 java 对象