Solved

execution of clearcase' cleartool shell from java code

Posted on 2003-10-28
11
414 Views
Last Modified: 2010-05-18
execution of clearcase' cleartool shell from java code does not work
0
Comment
Question by:gmeltsin
  • 6
  • 4
11 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 9640610
Try it using this:


import java.io.*;

public class RunAsync {

    public static void main(String args[]) {

     try {

        if(args.length < 1) {
          System.out.println("Usage: java RunAsync <command string>");
          System.exit(-1);
        }
        Process pro = null;
        if (args.length > 1) {
          pro = Runtime.getRuntime().exec(args);
        }
        else {
          pro = Runtime.getRuntime().exec(args[0]);
        }
        InputStream error = pro.getErrorStream();
        InputStream output = pro.getInputStream();
        Thread err = new Thread(new OutErrReader(error));
        Thread out = new Thread(new OutErrReader(output));
        out.start();
        err.start();
        pro.waitFor();
     }
     catch(java.io.IOException e) {
       e.printStackTrace();
     }
     catch(java.lang.InterruptedException e) {
       e.printStackTrace();
     }

    }

    static class OutErrReader implements Runnable {
      InputStream is;

      public OutErrReader(InputStream is) {
        this.is = is;
      }

      public void run() {
        try {
          BufferedReader in = new BufferedReader(new InputStreamReader(is));
          String temp = null;
          while((temp = in.readLine()) != null) {
             System.out.println(temp);
          }
          is.close();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
    }
}
0
 

Author Comment

by:gmeltsin
ID: 9642463
clearcase's cleartool expects clearcase view to be set prior to using basic functions(checking ,checkout, etc).
so i need to execute two commands
1. Runtime.getRuntime().exec("cleartool setview view_name");  - sets the view
2. Runtime.getRuntime().exec("cleartool co file_name"); - checksout the file

The problem is that second process does not recognize what was done in first
Second process does not 'see' that the view was set
thanks
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9642535
I don't see how this could be any different to how it's executed at the command line.

Are you sure the first is succeeding? You can always change

>>pro.waitFor();

to

System.out.println("Process return value: " + pro.waitFor());

to see
0
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 

Author Comment

by:gmeltsin
ID: 9642753
no return value
pro.waitFor() hangs after Runtime.getRuntime().exec("cleartool setview view_name"),
but the same command is fine from command line
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9644779
>>pro.waitFor() hangs ...

and are you fully using the code i posted?
0
 

Author Comment

by:gmeltsin
ID: 9650797
when i am using threads the app stops working when i create them.
probably because it's inside struts.
without threads it hangs at pro.waitFor() level
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9651596
>>the app stops working when i create them

What do you mean by that? Don't see it should be a Struts-related problem. Maybe your container...
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 250 total points
ID: 9651604
Of course it's conceivable that your container's security policy disallows the creating of processes.
0
 

Author Comment

by:gmeltsin
ID: 9652016
but i am able  to run other processes...
it seems that the problem is clearcase's cleartool command. it takes the process to the different shell and never exists from there. That's why the app hangs
Anyway, thanks for help. the points are rightfully yours
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 9652045
>>it takes the process to the different shell and never exists from there.

Well I don't know what you mean by the above, but thanks anyway.
0
 
LVL 3

Expert Comment

by:Reddgum
ID: 10179780


"Runtime.getRuntime().exec("cleartool setview view_name");  - sets the view"

The CT setview command only works in Unix, and from what I can tell from your code, each incantation of Runtime.getRuntime().exec actually either runs a new shell or a new thread. If you are attempting to run this code from a Windows platform, "setview" will fail.

Also,

"Runtime.getRuntime().exec("cleartool co file_name"); - checksout the file"

Sure, but then the process will definitely hang WAITING FOR USER INPUT, as you left out the
-nc flag so that the process would not ask for comments for the check-in. :-)

-Just strolling by amusing myself with a little reading.

Cheers,
         -Mike




0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

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

Suggested Solutions

For customizing the look of your lightweight component and making it look opaque like it was made of plastic.  This tip assumes your component to be of rectangular shape and completely opaque.   (CODE)
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

785 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