# ANT - javac + externe Jar + sourcepath



## diggaa1984 (25. Mai 2009)

hiho,

ich könnt schwören das ich alles richtig mache, dennoch kann ich über das Ant-Script nicht den Source compilieren, da er die Klassen in der Jar nicht findet, bzw die Jar wohl selbst nicht, obwohl diese 1000%-ig nach dem copy-befehl im richtigen Ordner erscheint, hab extra nachgeschaut

[XML]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project name="gfeConsole" default="build_project">
	<property name="build" value="build"/>
	<property name="dist" value="dist"/>
	<property name="lib" value="lib"/>
	<property name="src" value="src"/>
	<property name="shared" value="${basedir}/../shared"/>


	<target name="build_project" description="compiles source-code" depends="getActualLibs">
		<echo message="Compiling all sourcefiles within ${src}"/>
		<mkdir dir="${build}" />
		<javac srcdir="${src}" destdir="${build}" sourcepath="${lib}/GrammarLib.jar" />
	</target>

	<target name="getActualLibs" description="copies needed libs into ${lib}">
		<echo message="Copying libs from shared folder"/>
		<copy file="${shared}/GrammarLib.jar" todir="${lib}"></copy>
	</target>
</project>
[/XML]

```
[COLOR="Red"][javac] C:\Eclipse 3.4\Workspace\FormeleditorKonsole\src\gfeconsole\Controller.java:16: package grammar does not exist
    [javac] import grammar.Grammar;[/COLOR]

//das dann ca 20 weitere male
```

in eclipse geht das ja alles wunderbar, aber wollts eben per ANT regeln, um mal was neues zu lernen


----------



## X5-599 (25. Mai 2009)

hi,

existiert denn tatsächlich ein package: 'grammar' im GrammarLib.jar?

Ansonsten kann ich mir net vorstellen was da schieflaufen könnte... Hab' aber schon laaaange nichths mehr mit ANT gemacht, muss ich dazu sagen. ^^


Gruß,
michael


----------



## diggaa1984 (25. Mai 2009)

ja, wie gesagt, von eclipse aus kann ich ja alles builden und starten ohne Fehler etc .. kann mir des auch gar net erklären :bahnhof:

zumal ich behaupten würde, das es sogar schon 1x funktioniert hat, aber nach weiteren Änderungen in dem script gings dann net mehr ... strange

die Jar ist ja auch von mir selbst erstellt


----------



## diggaa1984 (25. Mai 2009)

hier nochma der beweis, dass eigentlich alles stimmen sollte.

copy überschreibt alle bereits existierenden Datein, alle kopierten Datein werden ausgegeben (verbose) und ja das package is soweit korrekt und komplett.

screen


----------



## X5-599 (25. Mai 2009)

hab nochmal nachgelesen.

versuch es dochmal mit dem attribut: 'classpath' anstelle von 'sourcepath'

oder besser lies auch mal hier:
Javac Task

denn so wie ich das verstehe, hat der 'sourcepath' irgendwas mit dem 'srcdir' zu tun. was genau weiss ich nicht. standardmässig hat er wohl den selben wert wie 'srcdir'. also gibt er wohl auch nur an wo sources gesucht werden. und man kann ihn abschalten indem man ' sourcepath="" ' schreibt. dann kann man selber angeben welche source-files compilliert werden sollen...

was jetzt passiert wenn man sowas wie ' sourcepath="/lib/irgendwas/*.java" ' müsste man mal ausprobieren.
denn um eine weitere source quelle anzugeben kann man laut oben genannter seite auch sowas schreiben:
<javac srcdir="${src}:${src2}" />

wär ja nicht das erste mal wenn mehrere möglichkeiten gegeben sind um auf das gleiche ergebnis zu kommen. ich würde wahrscheinlich letztere variante nehmen um mehrere source-file-quellen anzugeben. und den sourcepath nur verwenden wenn ich den eingebauten suchmechanismus abschalten wollte.

Aber das sind wie gesagt nur meine Ansichten, die grösstenteils aus 5min 'überfliegen' der javac.htm Seite stammen... Wenn sich also mal wer zu Wort meldete, der sich wirklich damit auskennt, wär' auch ich demjenigen sehr dankbar.

was ich eigentlich sagen wollte: versuch es mal mit 'classpath'

gruß,
michael


----------



## diggaa1984 (25. Mai 2009)

hm hast recht, hab eben mal verbose von javac aktiviert, da stand dann sowas:


```
[javac] [search path for source files: C:\Eclipse 3.4\Workspace\FormeleditorKonsole\lib\GrammarLib.jar]
[javac] [search path for class files: F:\Programme\Java\jre1.6.0_07\lib\resources.jar, .. 1MioMrd andere jars ^^
```

dann frag ich mich grad warum ich da auf sourcepath gewechselt habe, denn classpath hatte ich vorher auch mal testhalber drin ???:L:autsch: Vermutlich weil ich mal mit classpath erfolgreich compiliert hatte, dann testhalber zu sourcepath überging, erneut das skript angeworfen habe und wiederum der Build erfolgreich war. Da ja keine *.java - Datein verändert wurden .. hat er aber im Prinzip nix compiliert, und nix neues gemacht, daher Build successfull mit sourcepath :noe: .. welche Irreführung

nuja ok, so simpel wie einfach was ^^

danke für deine mühe


----------



## X5-599 (25. Mai 2009)

nichts zu danken 

...irgendwie lässt mich das trotzdem noch nicht los. soviel was man noch nicht weiss über ant... soviele attribute die sich gleich anhören...

irgendwann teste ich mal ausgiebig! ... bis dahin begnüge ich mich mit dem was ich weiss(und was funktioniert) zumindest hat es meistens den anschein, dass es funktioniert ^^ 

gruß,
michael


----------

