Wow this question is quite old and none of the answers are marked. So I'll try to explain the problem and to provide another solution.
The problem with OSGi classpaths is, that every bundle has it's own private classloader. That bundle classloader must have the template resources on the classpath and the Velocity classes. If the Velocity classes are provided by another bundle, Velocity's ClasspathResourceLoader will not find the template resources because they are not on that bundle's classpath.
So either you have to
For the latter option I would choose another approach and would specialize ClasspathResourceLoader to be configured with the explicit class loader instance which is aware of the resources.