问题标签 [protostuff]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
148 浏览

java - Protostuff - 在 Windows 中为 .java 文件生成不正确的输出路径

我收到错误“文件名、目录名或卷标语法不正确”,因为 protostuff-maven-plugin 在 Mac 上正常工作时没有生成正确的输出路径。以下是详细信息:

由以下原因引起的错误:java.io.FileNotFoundException: C:\ABC\target\generated-sources\com\abc\optimization\common\vdf\C:\ABC\src\main\protostuff\VDFCollectionTypeSchema.java(文件名、目录名称或卷标语法不正确)

只是文件名应该附加到路径中,但它附加了另一个绝对路径。这是配置部分[完整配置请参考附图]:

输出路径应为:C:\ABC\target\generated-sources\com\abc\optimization\common\vdf\VDFCollectionTypeSchema.java

而是生成 C:\ABC\target\generated-sources\com\abc\optimization\common\vdf\C:\ABC\src\main\protostuff\VDFCollectionTypeSchema.java

我正在使用 protostuff 版本 1.3.0,1.2.0 也有这个问题。

0 投票
1 回答
473 浏览

java - 在运行时替换字段的类(用于 protostuff)

我正在研究一个在不同版本的类(来自序列化二进制表示)之间向后兼容的框架。

我坚持的一件事是如何在运行时用不同版本的字段类替换类中使用的字段。

如果所讨论的类是父对象( Java - 如何加载同一类的不同版本?),我知道如何使用 Classloader 来做到这一点。

但是当我已经有一个对象并且需要更改它的一个字段(或者我不知道如何)时,这不起作用。反射 API 似乎也没有在实例化类后设置类的方法。

我会举一个例子,以便更好地理解。假设我有一个包装类:

现在假设我作为变量内容加载的类在 20 个版本前发生了变化。不过,我仍然拥有当时使用的原始 .java(或 .class-)文件。我打算做的是,使用旧类版本的内容创建一个包装器实例,从光盘加载它,对其进行转换并将其写入最新版本的包装器,其中包含用于内容的当前版本的类。

它还需要非常通用,这就是为什么我在包装器中使用对象而不是实际类的原因。真正的问题是我需要它来进行 protostuff 运行时(反)序列化。这意味着我将 Wrapper.class 传递给 protostuff 并为其生成序列化模式。这目前失败,因为 wrapper.class 文件自动引用新版本(它在项目的包中)。

我不确定这是否会通过类加载器,如果是的话,什么时候。我想它必须,但我不确定什么时候会发生。

解决这个问题的最佳方法是什么?

0 投票
1 回答
140 浏览

protostuff - 使用 ProtoStuff 跨 JDK 1.6 和 JDK 1.7 对 Throwable 进行序列化和反序列化

我们有两个系统,一个运行 JDK 1.6,另一个运行 JDK 1.7。为了在两个节点之间进行通信,我们使用 ProtoStuff 序列化来转换二进制文件并传输到另一个节点,在该节点再次对二进制文件进行反序列化。

JDK 1.7 添加了新字段 'suppressedExceptions',所以现在如果我们在一个节点中序列化 JDK 1.7 中的 Throwable 并转移到另一个节点,它就不能反序列化,反之亦然。

由于两个节点使用不同的技术,因此无法从 JDK 1.6 迁移到 JDK 1.7 和 JDK 1.7 到 JDK 1.6。

有没有解决这个问题的方法,先谢谢你的回复。

问候, 帕万

0 投票
1 回答
426 浏览

java - 如何修复“无法解析导入 com.dyuproject”错误

我对 Java 很陌生,尤其是对 Maven 尤其是 protostuff 项目(protostuff 网站)很陌生。我需要使用 protostuff 将 XML 序列化/反序列化为谷歌的 protobuf 格式。我尝试使用protobuf-java-format包,但是在反序列化中有一个记录错误,这对我来说是一个阻碍(问题 37)。

到目前为止,我已经完成了以下工作:

  1. 下载 protostuff-1.3.1 并提取它。
  2. Ran mvn integration-testmvn install并且mvn package所有步骤都成功了。
  3. 然后我创建了一个新的 Maven 项目并包含了一个原型,如此处所述
  4. 然后我修改了我的 pom.xml 并按照上述链接protostuff:compile中的描述在 proto 上运行,生成以下 Person.java 文件

    /li>

我正在 Eclipse(Luna 版本)中构建整个项目,它为上述文件提供了错误“无法解析导入 com.dyuproject”。我不明白为什么它会给出错误或如何查找/安装包以便 Eclipse 可以看到它。Maven应该构建/提供它吗?

我在 VirtualBox VM 上运行 CentOS 6.4 版(最终版):

uname -a Linux localhost.localdomain 2.6.32-358.18.1.el6.x86_64 #1 SMP Wed Aug 28 17:19:38 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux `

0 投票
1 回答
1255 浏览

java - 使用 protostuff 反序列化数组

我正在尝试使用 protostuff 序列化反序列化 json 但是当我序列化对象时,数组的大小放在前面

如果我尝试反序列化相同的字符串,它就像一个魅力,但我的数据没有“a”:3,“b”:因为标签很简单

当我尝试像上面那样反序列化一个字符串时,我抛出了一个异常

使用的java代码:

产品类别:

0 投票
2 回答
1693 浏览

protostuff - 如何通过protostuff将映射序列化为字节数组

是什么方法在使用protostuff时将java.util.Map序列化为字节数组,我看到protostuff-collectionsschema.jar文件中有一个MapSchema,但是不知道怎么用。谁能给我一些示例代码,在此先感谢。

0 投票
1 回答
1082 浏览

serialization - 使用 Protostuff 进行动态模式和反序列化

我正在使用 Protostuff 尝试序列化/反序列化几种不同类型的对象,这些对象没有可用的 protobuf 源(这是服务器-服务器 RPC 场景)。序列化没问题,因为我知道要序列化的对象的类型并且可以创建模式:

现在,我使用ProtobufIOUtil.toByteArray并获取一个字节数组,然后将其传递给远程服务器。但是,我似乎无法在远程服务器中反序列化这个字节数组,因为我无法为“未知”类型的对象创建模式。有什么办法可以克服这个问题并以与使用 Java 的本机序列化相同的方式使用 Protostuff?

0 投票
1 回答
891 浏览

java - 字节 [] 中的对象类型要使用模式反序列化?

我正在尝试将基于字符串的协议替换为使用 protobuf 的协议。我使用以下命令序列化移动命令:

我的命中命令是:

这没有问题。当我序列化结果是一个字节[]时,这个数据被发送并套接字到服务器套接字。

在服务器端,我读出了 byte[] 数组,但是如何确定 byte[] 数组中的对象的类型?(是 HitCommand 还是 MoveCommand?)

我问这个是因为要反序列化我需要一个模式,并且当我知道 byte[] 数组内的对象的类时,我只能创建/获取模式。

使用我的旧字符串协议,我只是在字符串的开头有消息的类型。

我怀疑我错过了一些重要的东西。

0 投票
1 回答
601 浏览

java - Protostuff 1.3.8 中的 RuntimeSchema

我正在尝试学习如何使用 Protostuff。我有一个使用 protostuff 1.0.7 的示例。在此示例中,使用了类 RuntimeSchema。

当我尝试使用当前版本的 protostuff (1.3.8) 重现代码时,我失败了,因为 RuntimeSchema 类似乎不存在。我在网上搜索了当前的教程,但我只能找到: https ://github.com/protostuff/protostuff/wiki/Examples ,老实说,我不明白。

有人可以帮助我了解在当前版本中应该如何使用 protostuff 吗?

0 投票
2 回答
1447 浏览

java - 没有注释的泽西验证

我有一个基于 Jersey 的应用程序,我想向输入添加验证。

问题是我的 bean 是由 protostuff 生成的,我无法添加验证注释。我找到了如何在没有注释/xml的情况下验证bean的方法:http: //docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-programmatic-api

但是我对泽西岛非常不熟悉,并且无法在文档中找到如何在不使用 bean 注释的情况下将这个自定义验证器添加到泽西岛。有什么办法吗?

泽西版 - 2.8