平面缓冲区:对象序列化不得嵌套
Flat buffers : Object serialization must not be nested
FlatBufferBuilder fbb = new FlatBufferBuilder(1024);
String directory = "/Users/samarnath/RmsOne/CreateFlatBuffer/src/com/rms/objects/resources";
File [] policyfiles = ReturnFilesWithPattern(directory, "singlecoverriskpolicy");
for (File file: policyfiles)
{
Long StructureId = 0L;
int insurer = 0;
int insured = 0;
int UnderWriter = 0;
int inception = 0;
int Expiration = 0;
int ExternalID = 0;
Long SubjectId =0L;
int SubjectName = 0;
int SubjectStructureName = 0;
int Share = 0;
Double blanketLimit = 0.0;
Double attachment = 0.0;
int causeofLoss = 0;
int maxDeductible = 0;
int attachmentCurrency = 0;
int offset= 0;
int deductibleCurrencyOffset = 0;
int createOffset =0;
int blanketLimitCurrency = 0;
String folderName = "nfs://dev-spark-share.lab.rmsonecloud.net/mnt/data/UserData/import/outputfiles/Job_5/SmokeTest_2M/eufl_only_client4_2_edm__20151203-134544__24/contract/";
List<String> lines = Files.readAllLines(file.toPath());
List<String> actualLines = lines.subList(1, lines.size());
for (String line:actualLines)
{
String [] riskitems = line.split("~");
SingleCoverRiskPolicy.startSingleCoverRiskPolicy(fbb);
Long Id = Long.parseLong(riskitems[0]);
int policyName = fbb.createString(riskitems[1]);
在上面的行之后我得到一个错误,说线程 "main" java.lang.AssertionError 中的异常:FlatBuffers:对象序列化不能 nested.I 在 fbb.createString 中得到一个错误。
代码很简单,我搞不懂这里有什么问题
来自documentation:"Everything else (other tables, strings, vectors) MUST be created before the start of the table they are referenced in."
因此,将 int policyName = fbb.createString(riskitems[1])
和您在 SingleCoverRiskPolicy
中引用的任何其他 strings/vectors/tables 移动到 startSingleCoverRiskPolicy
.
之前
FlatBufferBuilder fbb = new FlatBufferBuilder(1024);
String directory = "/Users/samarnath/RmsOne/CreateFlatBuffer/src/com/rms/objects/resources";
File [] policyfiles = ReturnFilesWithPattern(directory, "singlecoverriskpolicy");
for (File file: policyfiles)
{
Long StructureId = 0L;
int insurer = 0;
int insured = 0;
int UnderWriter = 0;
int inception = 0;
int Expiration = 0;
int ExternalID = 0;
Long SubjectId =0L;
int SubjectName = 0;
int SubjectStructureName = 0;
int Share = 0;
Double blanketLimit = 0.0;
Double attachment = 0.0;
int causeofLoss = 0;
int maxDeductible = 0;
int attachmentCurrency = 0;
int offset= 0;
int deductibleCurrencyOffset = 0;
int createOffset =0;
int blanketLimitCurrency = 0;
String folderName = "nfs://dev-spark-share.lab.rmsonecloud.net/mnt/data/UserData/import/outputfiles/Job_5/SmokeTest_2M/eufl_only_client4_2_edm__20151203-134544__24/contract/";
List<String> lines = Files.readAllLines(file.toPath());
List<String> actualLines = lines.subList(1, lines.size());
for (String line:actualLines)
{
String [] riskitems = line.split("~");
SingleCoverRiskPolicy.startSingleCoverRiskPolicy(fbb);
Long Id = Long.parseLong(riskitems[0]);
int policyName = fbb.createString(riskitems[1]);
在上面的行之后我得到一个错误,说线程 "main" java.lang.AssertionError 中的异常:FlatBuffers:对象序列化不能 nested.I 在 fbb.createString 中得到一个错误。
代码很简单,我搞不懂这里有什么问题
来自documentation:"Everything else (other tables, strings, vectors) MUST be created before the start of the table they are referenced in."
因此,将 int policyName = fbb.createString(riskitems[1])
和您在 SingleCoverRiskPolicy
中引用的任何其他 strings/vectors/tables 移动到 startSingleCoverRiskPolicy
.