ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey N. Solofnenko" <a.solofne...@mdl.com>
Subject Re: Compiling enums in Ant 1.6.5
Date Fri, 16 Dec 2005 01:08:59 GMT
Is it possible that you have old tools.jar somewhere on your CLASSPATH 
or in your ANT's installation directory?

- Alexey.

Rhino wrote:
>
> ----- Original Message ----- From: "Rhino" <rhino1@sympatico.ca>
> To: "ant-user" <user@ant.apache.org>
> Sent: Thursday, December 15, 2005 5:36 PM
> Subject: Compiling enums in Ant 1.6.5
>
>
>> Can the <javac> task in Ant 1.6.5 compile a typesafe enum when using 
>> the 'modern' compiler? If yes, how do I persuade it to do so? If no, 
>> is there any workaround or will I just have to compile the enum 
>> separately and include it in my build manually?
>>
>> Here is my task:
>>
>> <target name="compile" description="Compile the Java code.">
>> <javac srcdir="${common.src}" destdir="${common.bin}" 
>> compiler="modern" fork="yes"
>>  verbose="no" debug="on" debuglevel="lines,vars,source" 
>> deprecation="yes"
>>  description="Compile the code in the common package.">
>>  <patternset refid="ps.common"/>
>>  </javac>
>> </target>
>>
>> Here is the (relevant) output from the build, which had both the 
>> -debug and -verbose switches on:
>>
>> [javac] 
>> E:\eclipse\3.0.1\eclipse\workspace\Common\src\ca\maximal\common\Palette.java:19:

>> 'class' or 'interface' expected
>>
>> [javac] public enum Palette {
>>
>> [javac] ^
>>
>>
>> For what it's worth, I tried adding the source="1.5" parameter to the 
>> target and got the message "javac: invalid source release: 1.5". My 
>> JAVA_HOME environment variable is set to D:\Program 
>> Files\Java\jre1.5.0_06, otherwise I'd suspect that I was pointing at 
>> a 1.4 (or earlier) compiler.
>>
>> Can anyone shed some light on how I can get Ant to compile this enum?
>>
>
> I've solved my problem, although I'd like some guidance on why I had 
> to resort to this to make it work.
>
> Shortly after clicking on 'Send', I decided to look in my 
> JAVA_HOME\bin directory to verify that javac.exe was there. It 
> _wasn't_ there and I suddently remembered why: it was a JRE, not a 
> JDK, so naturally no compiler was present!
>
> [Hmmm, I just noticed Alexey's reply to my question; Alexey saw the 
> problem before I could finish this note!]
>
> Anyway, I changed JAVA_HOME to point to the 1.5.0_06 JDK instead of 
> the JRE. This was in d:\Program Files\Java\jdk1.5.0_06.
>
> I ran the javac task again, with the 'source' parameter included, as 
> shown here:
>
> <target name="compile" description="Compile the Java code.">
> <javac srcdir="${common.src}" destdir="${common.bin}" 
> compiler="modern" fork="yes"
>  verbose="no" debug="on" debuglevel="lines,vars,source" deprecation="yes"
>  source="1.5"
>  description="Compile the code in the common package.">
>  <patternset refid="ps.common"/>
>  <classpath 
> path="E:\eclipse\3.0.1\eclipse\workspace\Common\bin\ca\maximal\common\utilities\LocalizationUtils"/>

>
>  </javac>
> </target>
>
> and again got the error message: javac: invalid source release: 1.5
>
> Why??
>
> I amended the task to add the 'executable' parameter (compiler.path 
> was set to d:\Program Files\Java\jdk1.5.0_06\bin\javac):
>
> <target name="compile" description="Compile the Java code.">
> <javac srcdir="${common.src}" destdir="${common.bin}" 
> compiler="modern" fork="yes"
>  verbose="no" debug="on" debuglevel="lines,vars,source" deprecation="yes"
>  executable="${compiler.path}" source="1.5"
>  description="Compile the code in the common package.">
>  <patternset refid="ps.common"/>
>  <classpath 
> path="E:\eclipse\3.0.1\eclipse\workspace\Common\bin\ca\maximal\common\utilities\LocalizationUtils"/>

>
>  </javac>
> </target>
>
> This time my Palette enum compiled fine.
>
> However, I have some followup questions: Why did I have to add the 
> 'executable' parameter to make this work? Shouldn't Ant have seen the 
> correct compiler by virtue of the fact that I had corrected the 
> JAVA_HOME environment variable to point to a JDK? I did a 'set' at the 
> command prompt to verify that the amended JAVA_HOME was indeed visible 
> before doing the compiles.
>
> For what it's worth, Alexey's caution about the spaces in my JAVA_HOME 
> (...Program Files...) value struck me as a potential cause of the 
> problem so I: closed Eclipse; uninstalled the JDK; reinstalled it in 
> D:\Java; changed JAVA_HOME to D:\Java\jdk1.5.0_06; restarted Eclipse; 
> modified the compiler.path property to d:\Java\jdk1.5.0_06\bin\javac 
> and ran the build again.
>
> The result was exactly the same: if I omitted the 'executable' 
> parameter and used the 'source="1.5"' parameter, I got the 'javac: 
> invalid source release: 1.5' error. If I added 
> 'executable="${compiler.path}", the compile worked fine.
>
> How do I get the javac task to work _with_ the 'source="1.5"' 
> parameter but *without* specifying the 'executable' parameter?
>
> Rhino
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message