Hello,

The use case is different.

I have an eclipse project. Within eclipse IDE I use IvyDE. However
during development sometimes I want to start my application outside of
IDE (due to Eclipse performance issues). I do it by a batch file
(Windows). From documentation I saw that it is possible to use Ivy not
only as part of the build but also as the application launcher from a
batch file. See the link to Ivy doc bellow.

http://ant.apache.org/ivy/history/2.0.0/standalone.html

So I wrote a batch file which starts my application using Ivy launcher
which offers great possibility to resolve all dependencies at the moment
of start using the same ivy.xml .
*
**java -jar ivy-2.0.4.jar -ivy ivy.xml -confs default -main
com.my.MainClass -cp .\classes*

However I noticed that my application stared using Ivy launcher
terminates prematurely. I looked at the source code of Ivy launcher, and
i noticed that the launcher starts the application using specified class
and its main method, however as soon as the main of the called class
ends Ivy launcher *calls System.exit() which terminates the VM.* My 
application is a mulch-threaded server an *my main method  just sets up
and starts up the application and exits.**The application lives as long
as the last non-daemon thread terminates. **
**
*The assumption made by Ive designers/developers that each application
should terminate as soon as when its main terminates is wrong. In Java
the application terminates when its last non-daemon thread stops. In
present version using Ivy as an application launcher is not possible
because*it just kills the VM much too early*. See the source code from
Ivy launcher (this comes from sources of Ivy: *org.apache.ivy.Main*).
*In bold you can see the problematic line of code which kill s the VM.*
*I believe that it could be removed making Ivy launcher usable.*

  public static void main(String[] args) throws Exception {
         CommandLineParser parser = getParser();
         try {
             run(parser, args);
            *System.exit(0); *
         } catch (ParseException ex) {
             System.err.println(ex.getMessage());
             usage(parser, false);
             System.exit(1);
         }
     }


I would appreciate if this could be fixed.

Best regards and greetings.

Reply via email to