JML错误:.class文件似乎格式错误

时间:2015-11-20 21:11:15

标签: java jml

我是一名助教,为我的学生准备作业,以便他们通过合同学习JML和设计。我给它们3个文件: RArray.refines-java (带有空白JML断言的规范), RArray.java (实现上一个规范的类)和 TestRArray.java (测试类)。

为了执行这项工作,他们必须计算3个命令:

  1. jmlc RArray.refines-java(规范和实施的汇编)
  2. javac TestRArray.java(测试类的编译)
  3. jmlrac TestRArray(使用jml运行时断言检查程序进行验证)
  4. 但是,为了做到这一点,他们必须在学校的计算机上安装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)
    

    你对如何解决这个问题有任何想法吗?我希望我不必放弃一切。

0 个答案:

没有答案