## 提示1118行第37个字符有问题,遇到了非预期的'-' Generated code will be saved in ./ Parsing "C:\Users\Administrator\Desktop\Zamtel_HW_Msc\2021-01-01\HuaweiMSC_V1_RX.ASN.original" Exception in thread "main" line 1118:37: unexpected char: '-' at com.beanit.asn1bean.compiler.parser.ASNLexer.nextToken(ASNLexer.java:334) at antlr.TokenBuffer.fill(TokenBuffer.java:69) at antlr.TokenBuffer.LA(TokenBuffer.java:80) at antlr.LLkParser.LA(LLkParser.java:52) at com.beanit.asn1bean.compiler.parser.ASNParser.module_body(ASNParser.java:301) at com.beanit.asn1bean.compiler.parser.ASNParser.module_definition(ASNParser.java:182) at com.beanit.asn1bean.compiler.parser.ASNParser.module_definitions(ASNParser.java:58) at com.beanit.asn1bean.compiler.Compiler.getJavaModelFromAsn1File(Compiler.java:129) at com.beanit.asn1bean.compiler.Compiler.main(Compiler.java:106)
## 提示1500行第90个字符有非预期的'*' Generated code will be saved in ./ Parsing "C:\Users\Administrator\Desktop\Zamtel_HW_Msc\2021-01-01\HuaweiMSC_V1_RX.ASN.demo" line 1500:67: expecting "END", found 'SEQUENCE' Exception in thread "main" line 1500:90: unexpected char: '*' at com.beanit.asn1bean.compiler.parser.ASNLexer.nextToken(ASNLexer.java:334) at antlr.TokenBuffer.fill(TokenBuffer.java:69) at antlr.TokenBuffer.LA(TokenBuffer.java:80) at antlr.LLkParser.LA(LLkParser.java:52) at antlr.Parser.consumeUntil(Parser.java:149) at antlr.Parser.recover(Parser.java:312) at com.beanit.asn1bean.compiler.parser.ASNParser.module_definition(ASNParser.java:188) at com.beanit.asn1bean.compiler.parser.ASNParser.module_definitions(ASNParser.java:58) at com.beanit.asn1bean.compiler.Compiler.getJavaModelFromAsn1File(Compiler.java:129) at com.beanit.asn1bean.compiler.Compiler.main(Compiler.java:106)
定义文件:
解决方案:
虽然报错信息提示是*号,但这里依然是注释引起的问题。可以将该行注释删除。
类型定义未找到
错误提示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
## 类型定义MlcNumber没有找到 Generated code will be saved in ./ Parsing "C:\Users\Administrator\Desktop\Zamtel_HW_Msc\2021-01-01\HuaweiMSC_V1_RX.ASN.demo" Generating classes for module "HMSC" Exception in thread "main" java.lang.IllegalStateException: Type definition "MlcNumber" was not found in module "HMSC" at com.beanit.asn1bean.compiler.BerClassWriter.followAndGetNextTaggedOrUniversalType(BerClassWriter.java:2460) at com.beanit.asn1bean.compiler.BerClassWriter.followAndGetNextTaggedOrUniversalType(BerClassWriter.java:2436) at com.beanit.asn1bean.compiler.BerClassWriter.followAndGetNextTaggedOrUniversalType(BerClassWriter.java:2404) at com.beanit.asn1bean.compiler.BerClassWriter.followAndGetNextTaggedOrUniversalType(BerClassWriter.java:2393) at com.beanit.asn1bean.compiler.BerClassWriter.isDirectAnyOrChoice(BerClassWriter.java:2478) at com.beanit.asn1bean.compiler.BerClassWriter.getTag(BerClassWriter.java:465) at com.beanit.asn1bean.compiler.BerClassWriter.writeSequenceOrSetEncodeFunction(BerClassWriter.java:1259) at com.beanit.asn1bean.compiler.BerClassWriter.writeSequenceOrSetClass(BerClassWriter.java:839) at com.beanit.asn1bean.compiler.BerClassWriter.writeConstructedTypeClass(BerClassWriter.java:536) at com.beanit.asn1bean.compiler.BerClassWriter.translateModule(BerClassWriter.java:236) at com.beanit.asn1bean.compiler.BerClassWriter.translate(BerClassWriter.java:176) at com.beanit.asn1bean.compiler.Compiler.main(Compiler.java:119)
Generated code will be saved in ./ Parsing "C:\Users\Administrator\Desktop\Zamtel_HW_Msc\2021-01-01\HuaweiMSC_V1_RX.ASN.demo" Generating classes for module "HMSC" done
第一个类型错误中,临时将Extensions定义为一个不包含任何字段的SET,目前看还是不对。由于华为的文档里也没有描述,只能从命名猜测Extensions为Extension的集合,参考最一开始将SequenceCDR定义为SEQUENCE OF CDR,这里也可以将Extensions定义为SEQUENCE OF Extension。修改定义后重新生成Java文件即可正常解析数据文件。