# Hudson - Resourcen laden



## bygones (30. Sep 2009)

Hi,

ich bin gerade am rumexperimentieren mit Hudson, da wir vll von CruiseControl darauf umsteigen wollen.

Es gibt Tests in der Codebasis, die Resourcen ueber clazz.getResource() bzw  getClass().getClassLoader().getResource laden.

Der Cruise laeuft damit ohne Problem durch und die Tests sind auch erfolgreich.

Hudson jedoch findet die Resourcen nicht und die Tests scheitern.... 

ich habe leider keine Ahnung was hier der Unterschied sein koennte... hat jemand einen Tipp wo ich vll was nachschauen kann ?

Danke


----------



## bygones (30. Sep 2009)

zb bekomm ich ueber hudson die meldung

java.io.FileNotFoundException: C:\Dokumente%20und%20Einstellungen\foo\.hudson\jobs\workspace\product\Project\tests\classes\de\bar\foobar\conflictYellow.gif (Das System kann den angegebenen Pfad nicht finden)

die Datei gibt es aber und ist auch unter diesem Pfad vorhanden


----------



## maki (30. Sep 2009)

Bei dem ersten Fehler wäre interessant, wie der Code dazu aussieht bzw. das Layout der Ressourcen etc.
Ist das ein Ant Build? Dann wären auch die Scripte dazu interessant, zumindest die relevanten Teile.

Beim 2. Fehler finde ich interessant dass da %20 im Pfad steht, da wird aber nicht zufällig die toURL Methode genutzt?


----------



## bygones (30. Sep 2009)

maki hat gesagt.:


> Bei dem ersten Fehler wäre interessant, wie der Code dazu aussieht bzw. das Layout der Ressourcen etc.


zwei situation gibt es:

1. die Resource liegt im test/src ordner (bzw dann auch im test/classes). Der referenzierende Code liegt in einem Package, das sich unter dem test/src befindet.
Der Code schaut so aus:

```
private String absolutePath(String locationOfResourceInClasspath) {
        URL resource = getClass().getClassLoader().getResource(locationOfResourceInClasspath);
        return resource == null ? locationOfResourceInClasspath : resource.getFile();
    }
```
aufgerufen wird das mit [c]absolutePath("dieDatei")[/c]

2. die Resource liegt mit im package in dem auch der referenzieren Code sich befindet.
Der Code schaut so aus:

```
URL url = clazz.getResource(resouceName);
return new File(url.getFile());
```
aufgerufen auch mit dem einfachen Dateinamen. Das produziert die %20



maki hat gesagt.:


> Ist das ein Ant Build? Dann wären auch die Scripte dazu interessant, zumindest die relevanten Teile.


jo isses - da befuerchte ich a) zuweit ausholen zu muessen und b) um nicht gg Verschwiegenheitspflichten zu verstossen zu viel aendern zu muessen...
Der generelle Ablauf ist:

Ermittel mit ant4eclipse alle Projekte in der richtigen Reihenfolge -> baue alle Projekte -> ermittel fuer jedes Projekt den Classpath und fuehre dann fuer alle Klassen die auf Test enden Junit aus

```
<getEclipseClasspath project="${project}" pathId="test.classpath" runtime="true" />
<junit fork="yes" errorproperty="test.failed" failureproperty="test.failed">
			<classpath>
				<path refid="test.classpath"/>
				<!-- einige Tests brauchen log4j zur Laufzeit -->
				<pathelement path="${admin.dir}/lib/log4j.jar"/>
				<fileset dir="${workspace}/TestFiles">
				        <include name="**/*.jar"/>
			      </fileset>
			</classpath>

			<formatter type="plain" usefile="false"/>
			<formatter type="xml"/>
			
			<!-- Tests ausführen -->	
			<batchtest todir="${test-results}">
			    <fileset dir="${test-classes}"
				     includes="${param.include}"
					 excludes="${param.exclude}"/>
			</batchtest>
	    </junit>
```


----------



## bygones (30. Sep 2009)

hab mal das laden der resourcen auf
[c]Thread.currentThread().getContextClassLoader().getResource[/c]
umgestellt.

nun kommt kein FileNotFoundException mehr... nun kommt bei beiden einfach null ;-)


----------



## maki (30. Sep 2009)

Wäre mit der Konvertierung von URL zu File vorsichtig (bzw. URL#toFile), mal so aus neugier, liegt CruiseControl auch in einem Ordner dessen Pfad Leerzeichen hat?


----------



## bygones (30. Sep 2009)

ne der laeuft auf ner unix maschine... hudson test ich auf meinem windows rechner


----------



## bygones (30. Sep 2009)

ich mach mal n testlauf mit hudson auf einem nicht mit leerzeichen bestehenden pfad...


----------



## maki (30. Sep 2009)

Kann dir ehrlich gesagt nicht sagen wo das Problem ist, würde mal Testen was passiert wenn du das File mit einem URI instatiierst anstatt eines Strings.


----------



## bygones (30. Sep 2009)

0:1 fuer windows.

es scheinen die leerzeichen im Pfad das problem gewesen zu sein... unter anderem pfad laeuft der build momentan durch


----------



## SlaterB (30. Sep 2009)

2x bygones, 1x maki,  2x bygones, 1x maki,  2x bygones, 1x maki, 1x bygones
-> du muss nochmal antworten, bevor maki wieder dran ist,

ach nein, jetzt hab ich alles durcheinander gebracht


----------



## bygones (30. Sep 2009)

SlaterB hat gesagt.:


> ach nein, jetzt hab ich alles durcheinander gebracht


----------

