Java Netica错误还是压缩错误&引用;解压gzip的缓冲区';内部';“太小了”;

Java Netica错误还是压缩错误&引用;解压gzip的缓冲区';内部';“太小了”;,java,bytearray,gzip,bytearrayinputstream,Java,Bytearray,Gzip,Bytearrayinputstream,我在代码中使用NeticaJava库读取bayes网络,输入结果,并将更新后的bayes网络保存在字节数组中。字节数组保存得非常好(据我所知),但我似乎无法使用ByteArrayInputStream将其重新加载 我的代码是: Environ env = new EnvironI( null ); ByteArrayInputStream bais = new ByteArrayInputStream( myBinaryData ); bais.close(); Net model = new

我在代码中使用NeticaJava库读取bayes网络,输入结果,并将更新后的bayes网络保存在字节数组中。字节数组保存得非常好(据我所知),但我似乎无法使用ByteArrayInputStream将其重新加载

我的代码是:

Environ env = new EnvironI( null );
ByteArrayInputStream bais = new ByteArrayInputStream( myBinaryData );
bais.close();
Net model = new Net( new Streamer( bais, "templateFile.neta", env );
它在最后一行失败,出现以下错误:

stderr:  norsys.netica.NeticaException: 
**************  E R R O R  ***************
** ErrorNumber   = 2734
** ErrorSeverity = ERROR_ERR
** ErrorCategory = 
** ErrorMessage  = In function Net(Streamer inStream) constructor: buffer to decompress gzip 'internal' is too small (is 3082 but -981804177 needed)
请注意,这里有Netica库的特定应用程序。我还应该注意到,这在我的OSX机器上运行良好,但在Linux机器上似乎出现故障


有什么想法吗?

我已经决定了这个问题

我提到我之前在bayes网络中阅读过,代码如下所示:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Streamer stream = new Streamer( baos, "myNetaFile.neta", env );
net.write( stream );
byte[] bytesToEncode = baos.toByteArray();
stream.flush();
String encoded = Base64.encodeBase64String( bytesToEncode );
上面的代码实际上是正确的。当我读回二进制文件时,它不知怎么被破坏了。我的问题是我交换了.toByteArray()和.flush()行

如果其他人使用Netica遇到此问题,请记住正确的操作顺序