From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,XPRIO autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d59853e2dd116420,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-08-01 19:49:00 PST From: "Bin Chen" Newsgroups: comp.lang.ada Subject: Help: Problem with JGnat Date: Thu, 1 Aug 2002 22:46:38 -0400 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2919.6700 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 NNTP-Posting-Host: v90-232-252.dialup.umass.edu Message-ID: <3d49f31b@oit.umass.edu> X-Trace: 1 Aug 2002 22:48:59 -0500, v90-232-252.dialup.umass.edu Organization: University of Massachusetts, Amherst Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!canoe.uoregon.edu!elk.ncren.net!news.umass.edu!oit.umass.edu!v90-232-252.dialup.umass.edu Xref: archiver1.google.com comp.lang.ada:27595 Date: 2002-08-01T22:46:38-04:00 List-Id: Hi, I used jgnat compile the following Ada program to Java bytecode, it was OK, but when I ran the .class file, it always threw the following exception. Could you give me any feedback? Thank you. Bin Chen Exception: Exception in thread "main" java.lang.IllegalMonitorStateException at jgnat.adalib.system$task_primitives$operations.write_lock__2(s-taprop.adb:22 9) at jgnat.adalib.system$task_primitives$operations.lock_all_tasks_list(s-taprop. adb:771) at jgnat.adalib.system$task_primitives$operations.enter_task(s-taprop.adb:373) at jgnat.adalib.system$task_primitives$operations.initialize(s-taprop.adb:834) at jgnat.adalib.system$tasking._elabb(s-taskin.adb:186) at ada_main.adainit(b~main.adb:89) at main.main(main.adb) Sources: --Pack_Factorial.ads package Pack_Factorial is task type Task_Factorial is --Specification entry Start( F:in Positive ); --Rendezvous entry Finish( Result:out Positive ); --Rendezvous end Task_Factorial; end Pack_Factorial; --Pack_Factorial.adb package body Pack_Factorial is task body Task_Factorial is --Implementation Factorial : Positive; Answer : Positive := 1; begin accept Start( F:in Positive ) do --Factorial Factorial := F; end Start; for I in 2 .. Factorial loop --Calculate Answer := Answer * I; end loop; accept Finish( Result:out Positive ) do --Return answer Result := Answer; end Finish; end Task_Factorial; end Pack_Factorial; --main.adb with Ada.Text_Io, Ada.Integer_Text_Io, Pack_Factorial; use Ada.Text_Io, Ada.Integer_Text_Io, Pack_Factorial; procedure main is Thread_1 : Task_Factorial; Factorial: Positive; begin Thread_1.Start(5); --Start factorial calculation Put("Factorial 5 is "); Thread_1.Finish( Factorial ); --Obtain result Put( Factorial ); New_Line; end Main;