[Java, Ant] Adding Generics

Pagina: 1
Acties:

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 22-08 20:24
Ra-ra-ra, hoe voeg ik generics support toe aan Ant? 8)7
(Niet als in "nu volgt een howto", maar als in "wie kan mij helpen?" B))

Oke, ik pik her en der allemaal enthousiaste verhalen op van mensen die helemaal weg zijn van Ant (ja, you know who you are ;)), dus ik dacht laat ik er ook eens mee bezig gaan. :)

Of althans.. laat ik van de nood een deugd maken. ;) Nu werk ik dus met Oracle's JDeveloper en die vind ik inmiddels helemaal kewl. *D Maar helaas ondersteunt dat ding (of althans, de nieuwste versie 9.0.3 anyways) nog geen generics. Daarom heb ik eens wat rond zitten vragen en toen is mij verteld dat ik het beste met Ant plus build file in de weer kon gaan. Voor Ant zit namelijk wel 100% ondersteuning/integratie in JDeveloper. :7

Goed, ben ik dus wezen rondneuzen op de website van Ant en Google ;) en heb enige relevante info gevonden:Ik heb begrepen dat ik een nieuwe task moet implementeren en een compiler adapter. Nou heb ik dus gewoon die stukjes voorbeeld code maar overgenomen en hier en daar een klein beetje aangepast/uitgebreid.

Mijn build file ziet er nu zo uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?xml version = '1.0' encoding = 'windows-1252'?>

<!--Ant buildfile generated by Oracle9i JDeveloper-->
<!--Generated 12-okt-02 16:14:01-->
<project name="HMA" default="make" basedir=".">
   <taskdef name="jgc" classname="test.jgc.GenericsCompiler"/>

   <property name="jsr014.home" value="D:/Program Files/Java/Java2 1.4 Generics" />
   <property name="compile.bootstrapclass" 
        value="${jsr014.home}/collect.jar;${java.home}/lib/rt.jar" />

   <!--Set the JDeveloper home directory-->
   <property name="jdev.home" value="D:\Program Files\Java\JDeveloper 9.0.3"/>

   <!--Set the output directories-->
   <property name="compile.outdir" value="classes"/>
   <property name="javadoc.outdir" value="javadoc"/>

   <!--Set the classpath-->
   <path id="classpath">
      <pathelement location="D:\Program Files\Java\Java2 1.4 Generics\collect.jar"/>
      <pathelement location="D:\Program Files\Java\Java2 1.4 Generics\javac.jar"/>
      <pathelement location="D:\Program Files\Java\jakarta-ant-1.5.1\lib\ant.jar"/>
      <pathelement location="D:\Program Files\Java\jakarta-ant-1.5.1\lib\optional.jar"/>
      <pathelement location="D:\j2sdk1.4.1\jre\lib\rt.jar"/>
      <pathelement location="D:\j2sdk1.4.1\jre\lib\i18n.jar"/>
      <pathelement location="D:\j2sdk1.4.1\jre\lib\sunrsasign.jar"/>
      <pathelement location="D:\j2sdk1.4.1\jre\lib\jsse.jar"/>
      <pathelement location="D:\j2sdk1.4.1\jre\lib\jce.jar"/>
      <pathelement location="D:\j2sdk1.4.1\jre\lib\charsets.jar"/>
      <pathelement location="D:\j2sdk1.4.1\jre\classes"/>
      <pathelement location="classes"/>
      <pathelement location="${jdev.home}\jdev\lib\jdev-rt.jar"/>
   </path>

   <!--Set the source path-->
   <path id="srcpath">
      <pathelement location="src"/>
   </path>

   <!--Configure Oracle Java Compiler-->
   <!--property name="build.compiler" value="modern"/-->
   <property name="build.compiler"
                        value="test.jgc.GenericsCompilerAdapter"/>

   <target name="init">
      <tstamp/>
   </target>

   <target name="compile" depends="init">
      <mkdir dir="${compile.outdir}"/>
      <!--Compile Java source files-->
      <jgc destdir="${compile.outdir}" debug="on"
                 includeAntRuntime="false"
                 includeJavaRuntime="false"
                 warnunchecked="false"
                 genericsCompiler="${jsr014.home}/javac.jar"
                 bootclasspath="${compile.bootstrapclass}">
         <classpath refid="classpath"/>
         <src refid="srcpath"/>
         <include name="hma/util/ini/Section.java"/>
         <include name="hma/util/ini/IniParser.java"/>
...
...
         <include name="hma/HMALauncher.java"/>
      </jgc>

      <!--Copy files to output directory-->
      <copy file="src/hma/gui/help.gif" tofile="classes/hma/gui/help.gif"/>
      <copy file="src/hma/gui/openfile.gif" tofile="classes/hma/gui/openfile.gif"/>
      <copy file="src/hma/gui/closefile.gif" tofile="classes/hma/gui/closefile.gif"/>
   </target>

   <target name="clean">
      <!--Delete output directories-->
      <delete dir="${compile.outdir}"/>
      <delete dir="${javadoc.outdir}"/>
   </target>

   <!--target name="make" depends="compile"/-->
   <target name="make" depends="rebuild"/>

   <target name="rebuild" depends="clean,compile"/>

   <target name="all" depends="compile,doc"/>

</project>

(Is een beetje ingekort uiteraard :))

Anyways, wanneer ik ga builden, krijg ik deze fout:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...
...

compile:
    [mkdir] Created dir: H:\Mijn documenten\Programmeersels\JAVA\Hattrick 2\classes
      [jgc] Compiling 103 source files to H:\Mijn documenten\Programmeersels\JAVA\Hattrick 2\classes
      [jgc] javac: invalid flag: H:\Mijn
      [jgc] Usage: javac <options> <source files>
      [jgc] where possible options include:
      [jgc]   -g                        Generate all debugging info
...
...


BUILD FAILED
file:H:/Mijn documenten/Programmeersels/JAVA/Hattrick 2/build.xml:59:
                 Compile failed; see the compiler error output for details.

Total time: 2 seconds


U kunt allen zien dat er domweg een fout zit in de commandline. Tja, hoe dat kan en komt en opgelost kan worden, ik heb geen flauw idee eik. :X De documentatie op de Ant website vond ik een beetje boel te summier, dus dat hielp ook niet echt. En op dat Japanse voorbeeldje na heb ik geen enkele andere kunnen vinden. :|

Dus tjah.. nu hoopte ik eigenlijk dat een zeker iemand mij uit de brand zou kunnen helpen, evt met een werkend voorbeeldje. :)

Bedankt voor uw aandacht. B)

:Y)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je moet hier even kijken:
http://forum.javahova.net/topic.php?id=402

  • tomato
  • Registratie: November 1999
  • Niet online
Zie voor Generics en Ant inderdaad de door Alarmnummer gegeven link.

Maar het probleem dat je hier hebt heeft daar volgens mij niets mee te maken. Het lijkt er op dat Ant argumenten aan de Java compiler meegeeft zonder quotes. En aangezien er een spatie tussen 'Mijn' en 'documenten' staat pikt deze dat niet.

Ik weet verder niet genoeg van Ant om te kunnen zeggen waar het probleem dan precies zit en hoe je het op kunt lossen. Het lijkt me persoonlijk zeer sterk dat je met Ant geen files kunt compileren met paths die spaties bevatten... :?

[edit]
Oh, ik zie nu in je laatste alinea dat je dit zelf ook wel doorhad :X
Maar dan gaat je vraag toch eigenlijk helemaal niet over Ant en Java Generics? Of doet dit probleem zich niet voor wanneer je Ant met 'gewoon' javac gebruikt? Zelf gebruik ik namelijk nooit paths met spaties, dus dat weet ik niet.

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 22-08 20:24
Dat probleem met die spaties is - lijkt mij - gewoon een bug in die voorbeeldjes die ik heb gebruikt. Of het is wel mijn schuld omdat ik domweg niet goed genoeg in de Ant zit. Een extensie er op schrijven, terwijl je een dag er voor nog nooit Ant ook maar gebruikt hebt, is niet niets. :)

Ik heb net even heel snel die link bekeken (waarvoor dank Alarmnummer; ga ik na deze reply verder lezen), en daar worden twee oplossingen geboden en eentje heb ik nu net zitten proberen en dat werkte dus niet. Dus.. [dexter] through the siiiimple processs of eliminaeeetion [/dexter] hou je de ander over. Ik blijf vooralsnog vol goede hoop. :)

:Y)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 22-08 20:24
Ik ben toch nog even wezen proberen een eigen Task en CompilerApdater te schrijven en dat lijkt nu toch redelijk gelukt (alsnog op basis van die Japanse voorbeeldjes). :)

Die error "javac: invalid flag: H:\Mijn" kwam volgens mij doordat de commandline net ietsjes te lang was. :? Tja, als je zo'n 260 files met full pathname naar de compiler doorstuurt, kun je imo zoiets wel verwachten. Ik ga nu dus even kijken of ik de 'base' er af kan strippen (er staat namelijk al een switch -sourcepath in de commandline) en zal dan nog eens van me laten horen. :)

Owja, die thread bij Javahova bood helaas geen uitkomst. :/ Ik heb het idee dat ik net zo heb zitten stuntelen als jij Alarmnummer ;), maar misschien dat het feit dat ik midden in de nacht zat te pielen de reden was dat het mij net niet is gelukt. Dus daarom probeer ik het nog even met die tasks.. Het werkt namelijk al wél met een kortere commandline (als ik een stuk of 10 files pass). :X

:Y)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik heb alleen met gj gewerkt via Codeguide. Maar ik ben eigelijk helemaal overgestapt op Nice en ik wil niets meer met dat gehandicapte java te maken hebben ;)

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 22-08 20:24
Ja, ja.. Very nice. :) Kijk daar straks nog wel ff naar als ik dit eerst klaar heb. B)
Lekker mieren ontleden. >:)

edit:

Ben er denk ik al achter waarom hij paden afkapt. De nieuwe CompilerAdapter is een extensie op JavacExternal, waardoor hij echt javac(.exe) probeert aan te roepen. Dussss.. het ligt wat mij betreft aan Windoos (XP dus). Ik zal eens kijken of ik direct de class com.sun.tools.javac.Main kan aanroepen. :) Dan moet het geen probleem meer zijn. O-)

*splet*


:Y)
Pagina: 1