我是一名助教,为我的学生准备作业,以便他们通过合同学习JML和设计。我给它们3个文件: RArray.refines-java (带有空白JML断言的规范), RArray.java (实现上一个规范的类)和 TestRArray.java (测试类)。
为了执行这项工作,他们必须计算3个命令:
jmlc RArray.refines-java
(规范和实施的汇编)javac TestRArray.java
(测试类的编译)jmlrac TestRArray
(使用jml运行时断言检查程序进行验证)但是,为了做到这一点,他们必须在学校的计算机上安装JML,显然没有人可以访问root权限。我首先尝试安装它,看起来它不需要任何root访问权限 - 我跟着French tutorial使用此zip file。
我试过我的ubuntu 14.04笔记本电脑,它运行得很好,我已经能够管理一些分配结果。即使在学校,在Fedora上,我也可以毫无怨言地安装这些工具,并将它们添加到PATH中。但是,在学校,我跑步时遇到错误
jmlc RArray.refines-java
。
这是我的错误:
$ jmlc RArray.refines-java
parsing RArray.refines-java
parsing RArray1/RArray.java
typechecking RArray1/RArray.java
The .class file 'java/lang/CharSequence.class' appears to be malformed: Bad constant tag: 18
Fatal error - Unable to find a class for java/lang/CharSequence: error: Cannot find type "java.lang.CharSequence"
我之前尝试过搜索,看起来它可能是重复的CLASSPATHs,或者那些行中的某些内容,但我无法访问它。
我还尝试再次下载ZIP文件,以验证这个格式错误的类是否会被修复,但没有运气。
我试图运行javac RArray.refines-java
,并按照预期进行编译,因此它必须是jml问题。
以下是java -version
的结果:
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
以下是jml -version
的结果:
Version: Common JML tools release 5.6_rc4 (Mar. 16, 2009)
你对如何解决这个问题有任何想法吗?我希望我不必放弃一切。