Java Mailing List Archive

http://www.ant-tasks.com/

Apache Ant Archive

» Ant Users List
» Ant Developers List
AW: a problem compiling a Java 5 project with generics

AW: a problem compiling a Java 5 project with generics

2006-10-17       - By peter reilly
Reply:     1     2     3     4     5     6     7     8     9     10     >>  

On 10/17/06, Scot P. Floess <floess@(protected)> wrote:
> Failed for me using Fedora Core 5, sun JDK 1.5_08
>
> I don't think its javac as I was able to do this:
>
> touch src/test/Test3.java
> javac -d bin -sourcepath src -classpath bin src/test/Test3.java

That worked me as well, however I modifed the build script
to do this:
   <javac source="1.5" target="1.5"
          srcdir="src" destdir="build/classes"
          includeantruntime="no"
          debug="yes" fork="yes" executable="${java.home}/../bin/javac.exe"/>

and ran ant with -debug to see the exact command line:

"c:\program files\java\jdk1.6.0\jre\..\bin\javac.exe" -d "C:\Documents
and Settings\reilly\learning\a\compile\build\classes" -classpath
"C:\Documents and Settings\reilly\learning\a\compile\build\classes"
-sourcepath "C:\Documents and Settings\reilly\learning\a\compile\src"
-target 1.5 -g -source 1.5 "C:\Documents and
Settings\reilly\learning\a\compile\src\org\test\Test3.java"

This failed as well.

I removed the differences one at a time, when -classpath was removed,
the problem
went away.

I think that this is a javac problem, but perhaps ant does not need to set the
classpath attribute when -d is the same as -classpath ?

Peter

>
> Javac seems to find everything correctly...but the javac task in ant is
> having difficulties.  One thing to note is that the generics referred to
> by the inner classes are defined in terms of the outer class.
>
> James Abley wrote:
> > Fails for me:
> >
> > Ubuntu Dapper, Ant 1.6.5, Sun JDK 1.5.0_07
> >
> > <project>
> >     <javac srcdir="." destdir="."/>
> > </project>
> >
> > bash:$ ant -v
> > bash:$ touch test/Test3.java
> > bash:$ ant -v
> >
> >     [javac]     /work/ant-test/ant-generics/test/Test3.java
> >     [javac] /work/ant-test/ant-generics/test/Test3.java:8:
> > incompatible types
> >     [javac] found   : test.Base
> >     [javac] required: test.Sub
> >     [javac]         public Sub p() {return this.getV();}
> >
> > Is this a javac issue rather than ANT issue? I can provide more
> > information if required.
> >
> > James
> >
> > Jan.Materne@(protected) wrote:
> >> Also no problems .... on WinXP, Ant 1.6.5 and Java 1.5.0_06-b05.
> >>
> >>> setant 165
> >> Apache Ant version 1.6.5 compiled on June 2 2005
> >>
> >>> setjava 15
> >> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> >> Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
> >>
> >>> del test\*.class
> >>
> >>> ant -v
> >> Project base dir set to: C:\tmp\ant-generics
> >>     [javac] build.xml skipped - don't know how to handle it
> >>     [javac] test\Base.java added as test/Base.class doesn't exist.
> >>     [javac] test\Sub.java added as test/Sub.class doesn't exist.
> >>     [javac] test\Test1.java added as test/Test1.class doesn't exist.
> >>     [javac] test\Test2.java added as test/Test2.class doesn't exist.
> >>     [javac] test\Test3.java added as test/Test3.class doesn't exist.
> >>     [javac] Compiling 5 source files to C:\tmp\ant-generics
> >>     [javac] Using modern compiler
> >>     [javac] Compilation arguments:
> >>     [javac] '-d'
> >>     [javac] 'C:\tmp\ant-generics'
> >>     [javac] '-classpath'
> >>     [javac] ' LOT-OF-LIBS-FROM-ANT '
> >>     [javac] '-sourcepath'
> >>     [javac] 'C:\tmp\ant-generics'
> >>     [javac] '-g:none'
> >>     [javac]
> >>     [javac] The ' characters around the executable and arguments are
> >>     [javac] not part of the command.
> >>     [javac] Files to be compiled:
> >>     [javac]     C:\tmp\ant-generics\test\Base.java
> >>     [javac]     C:\tmp\ant-generics\test\Sub.java
> >>     [javac]     C:\tmp\ant-generics\test\Test1.java
> >>     [javac]     C:\tmp\ant-generics\test\Test2.java
> >>     [javac]     C:\tmp\ant-generics\test\Test3.java
> >> BUILD SUCCESSFUL
> >>
> >>> ant -v
> >> NOTHING-TO-COMPILE
> >>
> >>> touch test\Test3.java   (using Cygwin)
> >>
> >>> ant -v
> >> Project base dir set to: C:\tmp\ant-generics
> >>     [javac] build.xml skipped - don't know how to handle it
> >>     [javac] test\Base.class skipped - don't know how to handle it
> >>     [javac] test\Base.java omitted as test/Base.class is up to date.
> >>     [javac] test\Sub.class skipped - don't know how to handle it
> >>     [javac] test\Sub.java omitted as test/Sub.class is up to date.
> >>     [javac] test\Test1$Inner1.class skipped - don't know how to
> >> handle it
> >>     [javac] test\Test1.class skipped - don't know how to handle it
> >>     [javac] test\Test1.java omitted as test/Test1.class is up to date.
> >>     [javac] test\Test2$Inner2.class skipped - don't know how to
> >> handle it
> >>     [javac] test\Test2.class skipped - don't know how to handle it
> >>     [javac] test\Test2.java omitted as test/Test2.class is up to date.
> >>     [javac] test\Test3$Inner3.class skipped - don't know how to
> >> handle it
> >>     [javac] test\Test3.class skipped - don't know how to handle it
> >>     [javac] test\Test3.java added as test/Test3.class is outdated.
> >>     [javac] Compiling 1 source file to C:\tmp\ant-generics
> >>     [javac] Using modern compiler
> >>     [javac] Compilation arguments:
> >>     [javac] '-d'
> >>     [javac] 'C:\tmp\ant-generics'
> >>     [javac] '-classpath'
> >>     [javac] ' LOT-OF-LIBS-FROM-ANT '
> >>     [javac] '-sourcepath'
> >>     [javac] 'C:\tmp\ant-generics'
> >>     [javac] '-g:none'
> >>     [javac]
> >>     [javac] The ' characters around the executable and arguments are
> >>     [javac] not part of the command.
> >>     [javac] File to be compiled:
> >>     [javac]     C:\tmp\ant-generics\test\Test3.java
> >>
> >> BUILD SUCCESSFUL
> >>
> >>
> >>
> >> build.xml:
> >> <project>
> >>     <javac srcdir="." destdir="."/>
> >> </project>
> >>
> >>
> >>
> >> Jan
> >>
> >>
> >>> -----Urspr?ngliche Nachricht-----
> >>> Von: Peter Reilly [mailto:peter.kitt.reilly@(protected)] Gesendet:
> >>> Dienstag, 17. Oktober 2006 16:44
> >>> An: Ant Users List
> >>> Betreff: Re: a problem compiling a Java 5 project with generics
> >>>
> >>> On 10/17/06, Jan.Materne@(protected) <Jan.Materne@(protected)>
> >>> wrote:
> >>>> Works for me with Ant 1.6.5 and 1.7beta2 and the given java
> >>> sources (with and without the commented line).
> >>>> <project>
> >>>>     <delete dir="." includes="**/*.class"/>
> >>>>     <javac srcdir="." destdir="."/>
> >>>> </project>
> >>> This works by itself, but touch Test3.java and run again.
> >>> Peter
> >>>>
> >>>>
> >>>> Jan
> >>>>
> >>>>> -----Urspr?ngliche Nachricht-----
> >>>>> Von: Peter Reilly [mailto:peter.kitt.reilly@(protected)]
> >>>>> Gesendet: Dienstag, 17. Oktober 2006 11:39
> >>>>> An: Ant Users List
> >>>>> Betreff: Re: a problem compiling a Java 5 project with generics
> >>>>>
> >>>>> Can you enter a bugzilla report about this.
> >>>>> It is very strange.
> >>>>>
> >>>>> I tried on the commandline:
> >>>>>
> >>>>> javac -target 1.5 -g -source  1.5 -sourcepath src -d build\classes
> >>>>> src\org\test\Test3.java
> >>>>>
> >>>>> which works fine - and looks very like the command used by ant.
> >>>>>
> >>>>> Peter
> >>>>>
> >>>>>
> >>>>> On 10/17/06, Chavdar Botev <cbotev@(protected)> wrote:
> >>>>>> Hi
> >>>>>>
> >>>>>> For some reason, the mailing server included only the first
> >>>>>> attachment. Since this is the fourth or the fifth time I am
> >>>>> trying to
> >>>>>> send the java files, I give up. I'll inline them in the message.
> >>>>>>
> >>>>>> // src/test/Base.java
> >>>>>> package test;
> >>>>>> public class Base {}
> >>>>>>
> >>>>>>
> >>>>>> // src/test/Sub.java
> >>>>>> package test;
> >>>>>> public class Sub extends Base {}
> >>>>>>
> >>>>>> // src/test/Test1.java
> >>>>>> package test;
> >>>>>> public class Test1<T extends Base> {
> >>>>>>         public class Inner1 {
> >>>>>>                 protected T v;
> >>>>>>                 public Inner1(T v) {this.v = v;}
> >>>>>>                 public T getV() {return this.v;}
> >>>>>>         }
> >>>>>>         public Inner1 getInner(T v) {return new Inner1(v);} }
> >>>>>>
> >>>>>> // src/test/Test2.java
> >>>>>> package test;
> >>>>>> public class Test2<T extends Base> extends Test1<T> {
> >>>>>>         public class Inner2 extends Inner1 {
> >>>>>>                 public Inner2(T v) {super(v);}
> >>>>>>                 //public T getV() {return this.v;}
> >>>>>>         }
> >>>>>> }
> >>>>>>
> >>>>>> // src/test/Test3.java
> >>>>>> package test;
> >>>>>> public class Test3 extends Test2<Sub> {
> >>>>>>         public class Inner3 extends Inner2 {
> >>>>>>                 public Inner3(Sub v) {super(v);}
> >>>>>>                 public Sub p() {return this.getV();}
> >>>>>>         }
> >>>>>>
> >>>>>>         public Inner3 g() {
> >>>>>>                 return new Inner3(new Sub());
> >>>>>>         }
> >>>>>> }
> >>>>>>
> >>>>>>
> >>>>>> HTH,
> >>>>>> Chavdar
> >>>>>>
> >>>>>>
> >>>>>> On 10/16/06, Petar Tahchiev <paranoiabla@(protected)> wrote:
> >>>>>>> On 17/10/06, Chavdar Botev <cbotev@(protected)> wrote:
> >>>>>>>> Hi!
> >>>>>>>>
> >>>>>>>> I've come accross the following problem trying to
> >>> compile Java
> >>>>>>>> 5 classes with generics using Ant 1.6.5. I've attached
> >>>>> project with
> >>>>>>>> sample Java classes and a build.xml file.
> >>>>>>>>
> >>>>>>>> NOTE: Please create a src/test subdirectory and save the
> >>>>> attached
> >>>>>>>> .java files into it. The mailing list server gave me a hard
> >>>>>>>> time acepting an email with the archived project files. :(
> >>>>>>>>
> >>>>>>>> A clean build of the above project works just fine
> >>> and compiles
> >>>>>>>> without a problem. If after that, I touch the Test3.java
> >>>>> file the
> >>>>>>>> build fails with the following error:
> >>>>>>>>
> >>>>>>> [javac] C:\src\appforge\test\src\test\Test3.java:5:
> >>> incompatible
> >>>>>>> types
> >>>>>>>> [javac] found   : test.Base
> >>>>>>>> [javac] required: test.Sub
> >>>>>>>> [javac] public Sub p() {return this.getV();} [javac]
> >>> ^ [javac]
> >>>>>>>> 1 error
> >>>>>>>
> >>>>>>> I must admit that this behaviour is really strange. I am
> >>>>> interested
> >>>>>>> in helping you but the problem is that I didn't receive
> >>> any .java
> >>>>>>> files. Please try to prvide them again.
> >>>>>>>
> >>>>>>>
> >>>>>>> Initially, I thought that this was a problem with the Java
> >>>>> compiler.
> >>>>>>>> After touching Test3.java, I tried running javac manually:
> >>>>>>>>
> >>>>>>>> javac -sourcepath src -d bin -g -source 1.5 -target 1.5
> >>>>>>>> src\test\*.java
> >>>>>>>>
> >>>>>>>> It turned out that with the above command-line the project
> >>>>>>>> compiled OK. The project also compiles without a problem
> >>>>> in Eclipse 3.2.1.
> >>>>>>>> Am I missing anything? It is my understanding that the
> >>>>> build file
> >>>>>>>> and the command line should produce the same results.
> >>>>>>>>
> >>>>>>>> Upon further experimentation, if I uncomment the method in
> >>>>>>>> Test2.java fixes the problem. Touching Test3.java does
> >>>>> not break the build.
> >>>>>>>> Thanks,
> >>>>>>>> Chavdar
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>> ------------------------------------------------------------------
> >>>>>>>> --- To unsubscribe, e-mail:
> >>> user-unsubscribe@(protected) For
> >>>>>>>> additional commands, e-mail: user-help@(protected)
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Regards, Petar!
> >>>>>>> Karlovo, Bulgaria.
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>> -------------------------------------------------------------------
> >>>>>> -- To unsubscribe, e-mail: user-unsubscribe@(protected) For
> >>>>> additional
> >>>>>> commands, e-mail: user-help@(protected)
> >>>>>>
> >>>>>>
> >>>> ---------------------------------------------------------------------
> >>>>> To unsubscribe, e-mail: user-unsubscribe@(protected) For
> >>>>> additional commands, e-mail: user-help@(protected)
> >>>>>
> >>>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: user-unsubscribe@(protected) For
> >>> additional
> >>>> commands, e-mail: user-help@(protected)
> >>>>
> >>>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: user-unsubscribe@(protected) For
> >>> additional commands, e-mail: user-help@(protected)
> >>>
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@(protected)
> >> For additional commands, e-mail: user-help@(protected)
> >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@(protected)
> > For additional commands, e-mail: user-help@(protected)
> >
> >
>
> --
> Scot P. Floess
> 27 Lake Royale
> Louisburg, NC  27549
>
> 252-478-8087 (Home)
> 919-754-4592 (Work)
>
> Chief Architect JPlate  http://sourceforge.net/projects/jplate
> Chief Architect JavaPIM http://sourceforge.net/projects/javapim
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)


©2008 ant-tasks.com - Jax Systems, LLC, U.S.A.