You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Ajith Ranabahu <aj...@gmail.com> on 2005/08/09 07:37:18 UTC

[Axis2] problem with using the Ant Javac programmatically

Hi all,
I am writing an end to end test case for the code generator. To compile the 
generated code I use the Javac task from Ant. However I 've come across some 
problems, specially a weird problem where the 'java.home' appears to be 
pointing to the Java runtime instead of the JDK home.
Here are the details of the problem
I've used the Javac class (from Ant) to run the compiler. When I run the 
compiler I get an error message saying "Unable to find compiler, Perhaps the 
JAVA_HOME is pointing to the correct place". I've gone through the Javac 
code and then figured out that the compiler is searched using the 'java.home' 
directory. Strangely I have my JAVA_HOME pointed to c:\java\jdk1.4 but the '
java.home' system property points to the c:\java\jdk1.4\jre directory (where 
there is no reference to the tools.jar) and the compile task fails miserably 
:(. I did some tests and figured that the value of the java.home system 
property changes according to the environment you run java !
Currently the compile code is commented. 
Any pointer is appreciated

Thanks
-- 
Ajith Ranabahu

[Axis2] problem with using the Ant Javac programmatically

Posted by Guillaume Sauthier <Gu...@objectweb.org>.
instead of running cmd.exe, run javac directly ?

Guillaume

Venkat Reddy wrote:

>I know. If the basic idea really works for you atleast on windows, it
>gives the hint and you can always find an equivalent command for other
>platforms :-)
>
>- venkat
>
>On 8/11/05, Eran Chinthaka <ch...@opensource.lk> wrote:
>  
>
>>Small problem. IMHO, this will work only in windows. You have used cmd.exe.
>>
>>    
>>
>>>Ajith,
>>>
>>>I used the following code to get the value of environment variable
>>>"JAVA_HOME" instead of sysetm variable "java.home" which always points
>>>to jre.
>>>
>>>    public static String getEnv(String env) throws Exception { //
>>>env="JAVA_HOME"
>>>        Properties envVars = new Properties();
>>>        Runtime r = Runtime.getRuntime();
>>>        Process  p = r.exec( "cmd.exe /c set" );
>>>        BufferedReader br = new BufferedReader ( new
>>>InputStreamReader( p.getInputStream() ) );
>>>
>>>        for (String line; (line = br.readLine()) != null; ) {
>>>            int idx = line.indexOf( '=' );
>>>            String key = line.substring( 0, idx );
>>>            if (key.equals(env))
>>>                return line.substring( idx+1 );
>>>        }
>>>        return "";
>>>    }
>>>
>>>- venkat
>>>
>>>
>>>On 8/9/05, Guillaume Sauthier <Gu...@objectweb.org> wrote:
>>>      
>>>
>>>>Hi Ajith
>>>>
>>>>java.home sysprop is always pointing to the JRE directory.
>>>>In JOnAS, when we launch the javac command, we have to use this little
>>>>code snippet to get a real java.home (a JDK home)
>>>>
>>>>            javaHomeBin = System.getProperty("java.home", "");
>>>>            if (!("".equals(javaHomeBin))) {
>>>>                if (Env.isOsMacOsX()) {
>>>>                    javaHomeBin = javaHomeBin + File.separator + "bin" +
>>>>File.separator;
>>>>                } else {
>>>>                    javaHomeBin = javaHomeBin + File.separator + ".." +
>>>>File.separator + "bin" + File.separator;
>>>>                }
>>>>            }
>>>>
>>>>Maybe you can use this and reassign the java.home sysprop ?
>>>>
>>>>Bye
>>>>Guillaume
>>>>
>>>>Ajith Ranabahu wrote:
>>>>
>>>>        
>>>>
>>>>>Hi all,
>>>>>I am writing an end to end test case for the code generator. To
>>>>>compile the generated code I use the Javac task from Ant. However I
>>>>>'ve come across some problems, specially a weird problem where the
>>>>>'java.home' appears to be pointing to the Java runtime instead of the
>>>>>JDK home.
>>>>>Here are the details of the problem
>>>>>I've used the Javac class (from Ant) to run the compiler. When I run
>>>>>the compiler I get an error message saying "Unable to find compiler,
>>>>>Perhaps the JAVA_HOME is pointing to the correct place". I've gone
>>>>>through the Javac code and then figured out that the compiler is
>>>>>searched using the 'java.home'  directory. Strangely I have my
>>>>>JAVA_HOME pointed to c:\java\jdk1.4 but the 'java.home'  system
>>>>>property points to the c:\java\jdk1.4\jre directory (where there is no
>>>>>reference to the tools.jar) and the compile task fails miserably :(. I
>>>>>did some tests and figured that the value of the java.home system
>>>>>property changes according to the environment you run java !
>>>>>Currently the compile code is commented.
>>>>>Any pointer is appreciated
>>>>>
>>>>>Thanks
>>>>>--
>>>>>Ajith Ranabahu
>>>>>          
>>>>>
>>>>
>>>>        
>>>>
>>
>>
>>    
>>
>
>  
>


Re: [Axis2] problem with using the Ant Javac programmatically

Posted by Venkat Reddy <vr...@gmail.com>.
I know. If the basic idea really works for you atleast on windows, it
gives the hint and you can always find an equivalent command for other
platforms :-)

- venkat

On 8/11/05, Eran Chinthaka <ch...@opensource.lk> wrote:
> Small problem. IMHO, this will work only in windows. You have used cmd.exe.
> 
> >
> > Ajith,
> >
> > I used the following code to get the value of environment variable
> > "JAVA_HOME" instead of sysetm variable "java.home" which always points
> > to jre.
> >
> >     public static String getEnv(String env) throws Exception { //
> > env="JAVA_HOME"
> >         Properties envVars = new Properties();
> >         Runtime r = Runtime.getRuntime();
> >         Process  p = r.exec( "cmd.exe /c set" );
> >         BufferedReader br = new BufferedReader ( new
> > InputStreamReader( p.getInputStream() ) );
> >
> >         for (String line; (line = br.readLine()) != null; ) {
> >             int idx = line.indexOf( '=' );
> >             String key = line.substring( 0, idx );
> >             if (key.equals(env))
> >                 return line.substring( idx+1 );
> >         }
> >         return "";
> >     }
> >
> > - venkat
> >
> >
> > On 8/9/05, Guillaume Sauthier <Gu...@objectweb.org> wrote:
> > > Hi Ajith
> > >
> > > java.home sysprop is always pointing to the JRE directory.
> > > In JOnAS, when we launch the javac command, we have to use this little
> > > code snippet to get a real java.home (a JDK home)
> > >
> > >             javaHomeBin = System.getProperty("java.home", "");
> > >             if (!("".equals(javaHomeBin))) {
> > >                 if (Env.isOsMacOsX()) {
> > >                     javaHomeBin = javaHomeBin + File.separator + "bin" +
> > > File.separator;
> > >                 } else {
> > >                     javaHomeBin = javaHomeBin + File.separator + ".." +
> > > File.separator + "bin" + File.separator;
> > >                 }
> > >             }
> > >
> > > Maybe you can use this and reassign the java.home sysprop ?
> > >
> > > Bye
> > > Guillaume
> > >
> > > Ajith Ranabahu wrote:
> > >
> > > > Hi all,
> > > > I am writing an end to end test case for the code generator. To
> > > > compile the generated code I use the Javac task from Ant. However I
> > > > 've come across some problems, specially a weird problem where the
> > > > 'java.home' appears to be pointing to the Java runtime instead of the
> > > > JDK home.
> > > > Here are the details of the problem
> > > > I've used the Javac class (from Ant) to run the compiler. When I run
> > > > the compiler I get an error message saying "Unable to find compiler,
> > > > Perhaps the JAVA_HOME is pointing to the correct place". I've gone
> > > > through the Javac code and then figured out that the compiler is
> > > > searched using the 'java.home'  directory. Strangely I have my
> > > > JAVA_HOME pointed to c:\java\jdk1.4 but the 'java.home'  system
> > > > property points to the c:\java\jdk1.4\jre directory (where there is no
> > > > reference to the tools.jar) and the compile task fails miserably :(. I
> > > > did some tests and figured that the value of the java.home system
> > > > property changes according to the environment you run java !
> > > > Currently the compile code is commented.
> > > > Any pointer is appreciated
> > > >
> > > > Thanks
> > > > --
> > > > Ajith Ranabahu
> > >
> > >
> > >
> 
> 
> 
>

RE: [Axis2] problem with using the Ant Javac programmatically

Posted by Eran Chinthaka <ch...@opensource.lk>.
Small problem. IMHO, this will work only in windows. You have used cmd.exe.

> 
> Ajith,
> 
> I used the following code to get the value of environment variable
> "JAVA_HOME" instead of sysetm variable "java.home" which always points
> to jre.
> 
>     public static String getEnv(String env) throws Exception { //
> env="JAVA_HOME"
>         Properties envVars = new Properties();
>         Runtime r = Runtime.getRuntime();
>         Process  p = r.exec( "cmd.exe /c set" );
>         BufferedReader br = new BufferedReader ( new
> InputStreamReader( p.getInputStream() ) );
> 
>         for (String line; (line = br.readLine()) != null; ) {
>             int idx = line.indexOf( '=' );
>             String key = line.substring( 0, idx );
>             if (key.equals(env))
>                 return line.substring( idx+1 );
>         }
>         return "";
>     }
> 
> - venkat
> 
> 
> On 8/9/05, Guillaume Sauthier <Gu...@objectweb.org> wrote:
> > Hi Ajith
> >
> > java.home sysprop is always pointing to the JRE directory.
> > In JOnAS, when we launch the javac command, we have to use this little
> > code snippet to get a real java.home (a JDK home)
> >
> >             javaHomeBin = System.getProperty("java.home", "");
> >             if (!("".equals(javaHomeBin))) {
> >                 if (Env.isOsMacOsX()) {
> >                     javaHomeBin = javaHomeBin + File.separator + "bin" +
> > File.separator;
> >                 } else {
> >                     javaHomeBin = javaHomeBin + File.separator + ".." +
> > File.separator + "bin" + File.separator;
> >                 }
> >             }
> >
> > Maybe you can use this and reassign the java.home sysprop ?
> >
> > Bye
> > Guillaume
> >
> > Ajith Ranabahu wrote:
> >
> > > Hi all,
> > > I am writing an end to end test case for the code generator. To
> > > compile the generated code I use the Javac task from Ant. However I
> > > 've come across some problems, specially a weird problem where the
> > > 'java.home' appears to be pointing to the Java runtime instead of the
> > > JDK home.
> > > Here are the details of the problem
> > > I've used the Javac class (from Ant) to run the compiler. When I run
> > > the compiler I get an error message saying "Unable to find compiler,
> > > Perhaps the JAVA_HOME is pointing to the correct place". I've gone
> > > through the Javac code and then figured out that the compiler is
> > > searched using the 'java.home'  directory. Strangely I have my
> > > JAVA_HOME pointed to c:\java\jdk1.4 but the 'java.home'  system
> > > property points to the c:\java\jdk1.4\jre directory (where there is no
> > > reference to the tools.jar) and the compile task fails miserably :(. I
> > > did some tests and figured that the value of the java.home system
> > > property changes according to the environment you run java !
> > > Currently the compile code is commented.
> > > Any pointer is appreciated
> > >
> > > Thanks
> > > --
> > > Ajith Ranabahu
> >
> >
> >




Re: [Axis2] problem with using the Ant Javac programmatically

Posted by Venkat Reddy <vr...@gmail.com>.
Ajith,

I used the following code to get the value of environment variable
"JAVA_HOME" instead of sysetm variable "java.home" which always points
to jre.

    public static String getEnv(String env) throws Exception { //
env="JAVA_HOME"
        Properties envVars = new Properties();
        Runtime r = Runtime.getRuntime();
        Process  p = r.exec( "cmd.exe /c set" );
        BufferedReader br = new BufferedReader ( new
InputStreamReader( p.getInputStream() ) );

        for (String line; (line = br.readLine()) != null; ) {
            int idx = line.indexOf( '=' );
            String key = line.substring( 0, idx );
            if (key.equals(env))
                return line.substring( idx+1 );
        }
        return "";
    }

- venkat


On 8/9/05, Guillaume Sauthier <Gu...@objectweb.org> wrote:
> Hi Ajith
> 
> java.home sysprop is always pointing to the JRE directory.
> In JOnAS, when we launch the javac command, we have to use this little
> code snippet to get a real java.home (a JDK home)
> 
>             javaHomeBin = System.getProperty("java.home", "");
>             if (!("".equals(javaHomeBin))) {
>                 if (Env.isOsMacOsX()) {
>                     javaHomeBin = javaHomeBin + File.separator + "bin" +
> File.separator;
>                 } else {
>                     javaHomeBin = javaHomeBin + File.separator + ".." +
> File.separator + "bin" + File.separator;
>                 }
>             }
> 
> Maybe you can use this and reassign the java.home sysprop ?
> 
> Bye
> Guillaume
> 
> Ajith Ranabahu wrote:
> 
> > Hi all,
> > I am writing an end to end test case for the code generator. To
> > compile the generated code I use the Javac task from Ant. However I
> > 've come across some problems, specially a weird problem where the
> > 'java.home' appears to be pointing to the Java runtime instead of the
> > JDK home.
> > Here are the details of the problem
> > I've used the Javac class (from Ant) to run the compiler. When I run
> > the compiler I get an error message saying "Unable to find compiler,
> > Perhaps the JAVA_HOME is pointing to the correct place". I've gone
> > through the Javac code and then figured out that the compiler is
> > searched using the 'java.home'  directory. Strangely I have my
> > JAVA_HOME pointed to c:\java\jdk1.4 but the 'java.home'  system
> > property points to the c:\java\jdk1.4\jre directory (where there is no
> > reference to the tools.jar) and the compile task fails miserably :(. I
> > did some tests and figured that the value of the java.home system
> > property changes according to the environment you run java !
> > Currently the compile code is commented.
> > Any pointer is appreciated
> >
> > Thanks
> > --
> > Ajith Ranabahu
> 
> 
>

Re: [Axis2] problem with using the Ant Javac programmatically

Posted by Guillaume Sauthier <Gu...@objectweb.org>.
Hi Ajith

java.home sysprop is always pointing to the JRE directory.
In JOnAS, when we launch the javac command, we have to use this little 
code snippet to get a real java.home (a JDK home)

            javaHomeBin = System.getProperty("java.home", "");
            if (!("".equals(javaHomeBin))) {
                if (Env.isOsMacOsX()) {
                    javaHomeBin = javaHomeBin + File.separator + "bin" + 
File.separator;
                } else {
                    javaHomeBin = javaHomeBin + File.separator + ".." + 
File.separator + "bin" + File.separator;
                }
            }

Maybe you can use this and reassign the java.home sysprop ?

Bye
Guillaume

Ajith Ranabahu wrote:

> Hi all,
> I am writing an end to end test case for the code generator. To 
> compile the generated code I use the Javac task from Ant. However I 
> 've come across some problems, specially a weird problem where the 
> 'java.home' appears to be pointing to the Java runtime instead of the 
> JDK home.
> Here are the details of the problem
> I've used the Javac class (from Ant) to run the compiler. When I run 
> the compiler I get an error message saying "Unable to find compiler, 
> Perhaps the JAVA_HOME is pointing to the correct place". I've gone 
> through the Javac code and then figured out that the compiler is 
> searched using the 'java.home'  directory. Strangely I have my 
> JAVA_HOME pointed to c:\java\jdk1.4 but the 'java.home'  system 
> property points to the c:\java\jdk1.4\jre directory (where there is no 
> reference to the tools.jar) and the compile task fails miserably :(. I 
> did some tests and figured that the value of the java.home system 
> property changes according to the environment you run java !
> Currently the compile code is commented.
> Any pointer is appreciated
>
> Thanks
> -- 
> Ajith Ranabahu