Solved

Making Runtime.exec() wait

Posted on 2004-08-01
11
2,781 Views
Last Modified: 2009-04-29
The point of this thread is really that I feel like I owe Giant2 some more points for helping beyond what was needed... Others who wish to answer this question, though, see here for the details of my problem (I am willing to split points): http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_21074134.html#11674022

Though the details are at the link above, I will summarize the issue:
I am using Runtime.getRuntime().exec("javac File.java") to compile a java source file. However, I later JAR the file, so I need the Runtime command to finish compiling before continuing in the program (what it does otherwise is simply starts the compiling process alongside the rest of my program and does both at once).

Now, if I can get a code example I'll award the points and be off to finish my program!
0
Comment
Question by:CI-Ia0s
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
  • +2
11 Comments
 
LVL 9

Accepted Solution

by:
keteracel earned 40 total points
ID: 11687850
You just want a waitFor() in there:

Process proc = Runtime.getRuntime().exec("javac File.java");
proc.waitFor();
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11689035
Depends whether you want to do it in one thread or not. You can use waitFor if so. If you're using more than one thread and are compiling\jarring asynchronously, you need to use some form of semaphore
0
 
LVL 3

Author Comment

by:CI-Ia0s
ID: 11689505
It's one thread, and it's working. :)

Keteracel, I'm giving you the majority of the points for your example. I'm just waiting for Giant2 because I do owe him something for his help on this in the other thread. As soon as he posts here I'll split 'em up and dish 'em out.
0
Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

 
LVL 86

Expert Comment

by:CEHJ
ID: 11689532
>>It's one thread, and it's working. :)

Oh - from your other Q it looked like more than one thread ;-)
0
 
LVL 3

Author Comment

by:CI-Ia0s
ID: 11689545
Well... I am running several threads, but the jarring and javacing occur in the same thread. Plus, I'd think waitFor would still work anyway... Java waits to finish any process I call before moving on to the in the thread, right? (i.e. I call method Encrypt() from class EncryptData and it finishes that before continuing with the rest of the program).

Anyway, waiting on Giant2 now...
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11689576
>>but the jarring and javacing occur in the same thread

OK

>>Java waits to finish any process I call before moving on to the in the thread, right?

Yes

0
 
LVL 92

Expert Comment

by:objects
ID: 11689766
If you're interested here's an example that'll post your command output to a swing text area

http://www.objects.com.au/java/examples/util/SwingExec.do
0
 
LVL 3

Author Comment

by:CI-Ia0s
ID: 11690023
Cool. I was wondering how to get to that info... anyway, thanks. Now where is Giant2!?!?!
0
 
LVL 12

Assisted Solution

by:Giant2
Giant2 earned 35 total points
ID: 11691188
>Now where is Giant2
Sorry, I was out of office.
I believe the answer I gave at the post (Q_21074134.html#11674022) was correct:

I told in the that post:
>yes. You can use the waitFor method over the Process you use to start the javac.

Bye, Giant.
0
 
LVL 3

Author Comment

by:CI-Ia0s
ID: 11694732
Yup, it was. I just haven't worked with the Process class before and needed a code example. (I can see why you thought one wasn't necessary). ;)

You have both been awarded points. Thanks for your help!
0
 
LVL 12

Expert Comment

by:Giant2
ID: 11694763
Thank you.
:-)
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Java exception bubble up 2 26
login form jsp example 2 68
servlet and mdb, jms error 1 79
Java basic valueOf question 1 49
By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
The viewer will learn how to implement Singleton Design Pattern in Java.
Suggested Courses

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question