# Velocity. Allgeimeines Problem.



## Guest (31. Mai 2006)

Hallo Leute!

Frage zum Velocity:

Da ich mich nicht wirklich gut auskenne, habe ich mal angefangen... Leider komme
ich nicht wirklich weit, da eine Exception dies schon weit am Anfang verhindert.

```
public static void main(String[] args)    {
    	
    	StringWriter sw = new StringWriter();
    	
    	try {
    		
			Velocity.init();
			VelocityContext context = new VelocityContext();
	    	context.put("name", new String("Velocity") );
	    	Template template =  Velocity.getTemplate("g:\\example.vm");
	    	template.merge(context,sw);
	    	
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}
```


```
org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'g:\example.vm'
at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:458)
at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:341)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:831)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:813)
at org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.java:285)
at org.apache.velocity.app.Velocity.getTemplate(Velocity.java:469)
at Test.main(Test.java:50)
```

Was ist zu tun? Das Template liegt sicher in dem Verzeichnis. Warum wird das nicht gefunden?

Danke für Antworten,

gondor(..)


----------



## Leroy42 (1. Jun 2006)

Ich habe zwar keine Ahnung von struts (ich weiß nur, daß es sie gibt),
geschweige dann von irgendeinem Velocity-Package.

Aber bedeutet die Fehlermeldung: _Unable to find resource 'g:\example.vm'_
nicht einfach, daß die Datei nicht vorhanden (zugreifbar) ist?


----------



## Guest (1. Jun 2006)

Velocity kenne ich auch nicht, aber ein Blick in die Javadoc reicht, um zu sehen, 
was die Ursache ist.

http://jakarta.apache.org/velocity/docs/api/org/apache/velocity/app/Velocity.html#getTemplate(java.lang.String)
"Returns a Template from the Velocity resource management system."

Erste Frage, die man sich sofort stellt. Was für ein "Resource Management System"?
Eins ist klar, es wird kein Pfad erwartet, sondern der Name einer Ressource.

In der Doku gibt es eine ganze Sektion zu diesem Thema
http://jakarta.apache.org/velocity/docs/developer-guide.html#Configuring Resource Loaders

Dort steht irgendwas von einem "FileResourceLoader" und dass dieser per Default im aktuellen 
Verzeichnis sucht. Klartext: Keine Verzeichnispfade, sondern Laden von Ressourcen aus einem 
vordefinierten Verzeichnis (oder auch mehreren Quellen: mehrere ResourceLoader).
...
This is *the default loader*, and *is configured, by default to get templates from the 'current directory'.* 
In the case of using Velocity with servlets, this can be a problem as you don't want to have to keep 
your templates in the directory from which you start your servlet engine. Please see the section on 
developing servlets with Velocity for more information.

Wo man diese Einstellung vornimmt (ich würde vermuten, dass dies auch zur Laufzeit möglich ist),
ist wieder hier nachzulesen. 
http://jakarta.apache.org/velocity/docs/developer-guide.html#Velocity Configuration Keys and Values

Ab hier kannst du selbst fortsetzen.


----------

