我正在使用Objective (http://www.obj-sys.com/products/asn1c/index.php) ASN.1 Compiler和规范文件(cdr_spec.asn)生成的Java源代码。CDRS是基于格式BER(基本编码规则)进行编码的。
命令生成Java源:
./asn1c cdr_spec.asn -java -ber -reader -print -getset -pkgname com.testpkg产生的源是:
ASN1C Compiler, Version 6.4.5
Copyright (c) 1997-2011 Objective Systems, Inc. All Rights Reserved.
Registered to: XXXXXX
Parsing ASN.1 definitions..
Generating Java source files for module XXX-XXX..当我解码第一个CDR文件时,它只解析3行,CDR文件应该包含超过100行,所以它被部分解码。
当我尝试解码另一个CDR文件时,它在解码CDR文件时失败,并给出了这样的错误。
com.objsys.asn1j.runtime.Asn1MissingRequiredException: ASN.1 decode error @ offset 832:
SEQUENCE or SET is missing a required element.
10:11:30.394 [main] ERROR com.testpkg.Test - ASN.1 decode error @ offset 832:
SEQUENCE or SET is missing a required element.当我使用工具检查其语法时,我的ASN.1规范文件没有任何语法错误。
认识ASN.1的人能帮我吗?
发布于 2015-06-03 13:26:22
当我尝试解码另一个CDR文件时,它在解码CDR文件时失败了,并给出了这样的错误: com.objsys.asn1j.runtime.Asn1MissingRequiredException: ASN.1解码错误@偏移量832:序列或SET缺少所需的元素。10:11:30.394主要错误com.testpkg.Test - ASN.1解码错误@偏移量832:序列或SET缺少必需的元素。
从您的描述来看,问题似乎在于输入数据,而不是实际规范本身。对于供应商来说,提供与硬件产生的数据不完全一致的规范是很正常的。
如果您能够识别缺少哪一个元素,则始终可以尝试在规范中标记字段OPTIONAL,重新生成代码,然后再试一次。
或者,您可以随时与软件和/或硬件供应商联系以获得帮助。
https://stackoverflow.com/questions/30601478
复制相似问题