【问题标题】:Class not found exception java binary [closed]找不到类异常java二进制[关闭]
【发布时间】:2017-06-01 16:07:30
【问题描述】:

我有问题。我在eclipse中用java编写代码来制作java二进制(非Android项目)。在我在 Android Studio 中加载它之后。在类加载项目的 .java 文件中只是不同的包。在 Eclipse 中没有关于包的任何信息,而在 Android 项目中是该应用程序的包。我在类字节数组中。有什么问题?

我使用的代码:

//eclipse
MyClass data = new MyClass();
//do some things
FileOutputStream fos = new FileOutputStream("out.bin");
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(data);
os.close();

//Android
ObjectInputStream is = new ObjectInputStream(new FileInputStream(input));
MyClass Data = (MyClass) is.readObject();
is.close()

一切都在尝试,cath 和错误是"java.lang.ClassNotFoundException".

【问题讨论】:

  • 请显示完整的堆栈跟踪。

标签: java android class exception binary


【解决方案1】:

我不确定 Android,但通常对于 Java,您可以说: 将包所在的jar文件添加到类路径中,调用以package-id为前缀的类(在java文件的顶部)

【讨论】:

    【解决方案2】:

    为了让您能够读取MyClass 对象,两端的包结构和类应该相同(读取和写入)。否则,应为 ClassNotFoundException。

    这里来自Oracle docs:

    方法 writeObject 用于将对象写入流。任何对象,包括字符串和数组,都是用 writeObject 编写的。可以将多个对象或原语写入流。对象必须从对应的 ObjectInputstream 中以与写入时相同的类型和相同的顺序读回。

    【讨论】:

      【解决方案3】:

      不同的包名造成问题。将它们设置为相同。包名保存在二进制文件中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 2020-05-30
        • 1970-01-01
        相关资源
        最近更新 更多