0

我正在使用 Objective System Inc(http://www.obj-sys.com/products/asn1c/index.phpASN.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 的人都可以帮我解决这个问题吗?

4

1 回答 1

1

当我尝试解码另一个 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.

根据您的描述,问题似乎出在输入数据上,而不是实际规格本身。供应商提供与其硬件产生的数据不完全一致的规范并不罕见。

如果您可以确定缺少哪个元素,您可以随时尝试OPTIONAL在规范中标记该字段,重新生成代码,然后再试一次。

或者,您可以随时联系软件和/或硬件供应商寻求帮助。

于 2015-06-03T13:26:22.520 回答