Це питання спочатку було опубліковано на Переповнення стеку , і мені сказали, що замість цього потрібно розмістити його тут.
Я - асистент, який готує завдання для моїх учнів, щоб вони могли дізнатися про JML та розробити контракт. Я надаю їм 3 файли: RArray.refines-java (специфікація з порожніми JML-твердженнями), RArray.java (клас, який реалізує попередню специфікацію) і TestRArray.java (клас тесту).
Щоб виконати роботу, їм доведеться обчислити 3 команди:
jmlc RArray.refines-java
(складання специфікації та реалізації)javac TestRArray.java
(складання тестового класу)jmlrac TestRArray
(перевірка за допомогою перевірки твердості jml)
Для цього, однак, їм доводиться встановлювати JML на комп'ютерах у школі, де, очевидно, ніхто не має доступу root. Спочатку я спробував встановити його, і здається, він не вимагає жодного кореневого доступу - я слідував за цим Французький підручник , з цим zip-файл .
Я спробував на моєму 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"
Я намагався шукати раніше, і здається, що це може бути дублікатом CLASSPATH, або щось у цих рядках, але я не мав доступу до нього.
Я також спробував знову завантажити файл 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)
У вас є ідея, як це виправити? Я сподіваюся, що мені не доведеться відкидати все.