Câu hỏi này ban đầu được đăng trên Stack Overflow và thay vào đó tôi được yêu cầu đăng nó ở đây.
Tôi là một Trợ lý Giảng dạy chuẩn bị một bài tập cho các học sinh của mình, để các em học JML và thiết kế theo hợp đồng. Tôi cung cấp cho họ 3 tệp: RArray.refines-java (một đặc tả với các xác nhận JML trống), RArray.java (lớp thực hiện thông số kỹ thuật trước đó) và TestRArray.java (một lớp kiểm tra).
Để thực hiện công việc, họ sẽ phải tính toán 3 lệnh:
jmlc RArray.refines-java
(tổng hợp các đặc điểm kỹ thuật và việc thực hiện)javac TestRArray.java
(biên soạn lớp kiểm tra)jmlrac TestRArray
(xác minh với trình kiểm tra xác nhận thời gian chạy jml)
Tuy nhiên, để làm được điều đó, họ phải cài đặt JML trên các máy tính ở trường, nơi rõ ràng không ai có quyền truy cập root. Tôi đã thử cài đặt nó trước, và có vẻ như nó không yêu cầu quyền truy cập root - Tôi đã làm theo hướng dẫn tiếng Pháp này , với tệp zip này .
Tôi đã thử trên máy tính xách tay Ubuntu 14.04 của mình, nó hoạt động rất tốt và tôi đã có thể quản lý một số kết quả cho bài tập. Ngay cả ở trường, trên Fedora, tôi có thể cài đặt các công cụ mà không có bất kỳ phàn nàn nào, và thêm chúng vào PATH. Nhưng, ở trường, tôi gặp lỗi khi chạy
jmlc RArray.refines-java
.
Đây là lỗi của tôi:
$ 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"
Tôi đã cố gắng tìm kiếm trước đây và có vẻ như đó là vấn đề trùng lặp CLASSPATH hoặc một cái gì đó trong các dòng đó, nhưng tôi không thể truy cập nó.
Tôi cũng đã cố tải xuống tệp ZIP một lần nữa, để xác minh xem lớp không đúng định dạng này có được sửa hay không, nhưng không gặp may.
Tôi đã cố gắng để chạy javac RArray.refines-java
, và nó biên dịch như nó được yêu cầu, do đó nó phải là một vấn đề jml.
Đây là kết quả của 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)
Đây là kết quả của jml -version
:
Version: Common JML tools release 5.6_rc4 (Mar. 16, 2009)
Bạn có bất cứ ý tưởng về cách khắc phục điều này? Tôi hy vọng tôi sẽ không phải loại bỏ tất cả mọi thứ.