• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Devaka Cooray
  • Ron McLeod
  • Jeanne Boyarsky
Sheriffs:
  • Liutauras Vilda
  • paul wheaton
  • Junilu Lacar
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Piet Souris
  • Carey Brown
  • Tim Holloway
Bartenders:
  • Martijn Verburg
  • Frits Walraven
  • Himai Minh

run jar from java application

 
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Sorry if this should have been put in one of the categories, couldn't find one that would fit..

I have my main application, let's call it mainApp. I'm making a small application that's checks for updates for mainApp, downloads file and replaces old file "mainApp.jar". What i can't figure out is how i can run the file "mainApp.jar" from inside "updateApp".

I tried this in many syntaxes:
Process proc = Runtime.getRuntime().exec("cmd /C java -jar 'C://Program Files//Frontlinesystems/mainApp.jar' ");

i suspect by running this the "result" from mainApp.jar somehow is stored in the proc variable?

how should i do this?

tnx
 
Bartender
Posts: 5167
11
Netbeans IDE Opera Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
All else aside, why do you have double forward slashes in the file path?
 
Sheriff
Posts: 22701
129
Eclipse IDE Spring VI Editor Chrome Java Windows
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Read When Runtime.exec() won't. Using ProcessBuilder and let it redirect the error stream to the output stream can make life a little bit easier for you.

Now that you're reading the output from the process, you can get the information you need from it.


Another, completely different option, is to not use Runtime.exec / ProcessBuilder but call the main method from Java.
1) the JAR file is part of the class path, both at compile time and at runtime. Just call the static main method:

2) the JAR file isn't part of the class path:

Of course it's possible you don't know the main class from the JAR file. Using java.util.jar.JarFile and java.util.jar.Manifest you can retrieve it:
 
terr lundamo
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Rob Spoor!

I have never thought about why it needs to be double slashes, but that's just the way it is

I will try this out. I also found another solution involving running a bat file from the updater that starts the main application. Would you say one method is better than the other?

Stian
 
Rob Spoor
Sheriff
Posts: 22701
129
Eclipse IDE Spring VI Editor Chrome Java Windows
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I didn't even notice I copied the double slashes. You don't need those; you would need double backslashes (\\) because backslash is the escape character in Strings.

Using a separate process (either through cmd /c or through a bat file) has the advantage that any System.exit calls in the Java code will not exit your current application. The drawback is that you will need to take care of the issues described in the article I mentioned.
 
terr lundamo
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Ok, thanks for your help!

Stian
 
Right! We're on it! Let's get to work tiny ad!
the value of filler advertising in 2021
https://coderanch.com/t/730886/filler-advertising
reply
    Bookmark Topic Watch Topic
  • New Topic