2017-09-12 6 views
0

Project structure Comme indiqué ci-dessus la structure du projet. Dans le code,Déplacé Velocity jar de Bundle-ClassPath à Import-Package (dépendances de plugin) dans MANIFEST.MF Alors quel devrait être l'endroit pour le fichier .vm?

/* Define velocity engine and template */ 
VelocityEngine ve = new VelocityEngine(); 
ve.setProperty("resource.loader", "classpath"); 
ve.setProperty("classpath.resource.loader.class",ClasspathResourceLoader.class.getName()); 
ve.init(); 
Template t = ve.getTemplate("fileTemplates/DCM_Default.vm"); 

Auparavant, dans le dossier velocity.jar présentent/lib. Par conséquent, DCM_Default.vm avait found.MENIFEST.MF eu l'entrée comme ci-dessous dans classpath,

Bundle-ClassPath: ., lib/vitesse-1,7-dep.jar

Maintenant, la vitesse. pot retiré de classpath et il est présent dans Plugin dans MENIFEST.MF ont des dépendances ci-dessous Modifications-

Import-Package: org.apache.velocity, org.apache.velocity.app, org.apache.velocity.context, org.apache.velocity.exception, org.apache.velocity.runtime, org.apache.velocity.runtime.resource.loader

Je incapable de trouver chemin où je dois mettre .vm parce que je faisais face à l'exception Causée par: org.apache.velocity.exception.ResourceNotFoundException: Impossible de trouver la ressource 'fileTemplates/DCM_Default.vm'.

quelqu'un peut-il avoir une idée? Veuillez suggérer.

+0

L'exception dans clairement ne trouve pas le chemin. Vous pouvez déplacer le dossier 'fileTemplates' dans le dossier' src'. – soorapadman

+0

Merci pour votre réponse. J'ai déplacé le dossier fileTemplates/DCM_Default.vm dans src/mais cela n'a pas fonctionné. J'utilise RCP comme client. – Aditi

+0

Utilisez-vous le projet maven? – soorapadman

Répondre

0

I solution trouvée comme ci-dessous-

 //Define template location 
     Bundle bundle = FrameworkUtil.getBundle(getClass()); 
     URL fileUrl = FileLocator.toFileURL(FileLocator.find(bundle, new Path('fileTemplates/'), null));` 

     /* Define velocity engine and template */ 
     VelocityEngine ve = new VelocityEngine(); 
     ve.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, fileUrl.getPath()); 
     ve.init(); 
     Template t = ve.getTemplate("DCM_Default.vm"); 

Dans chemin, nous avons besoin du chemin absolu du dossier qui calcule au moment de l'exécution. Ceci est un travail dans le projet plugin client RCP.

0

Si vous utilisez le ClasspathResourceLoader, vous devez avoir un fichier jar contenant fileTemplates/DCM_Default.vm à l'exécution. Le placer dans le répertoire src ne garantit pas que cela fait partie du classpath, cela dépend de votre IDE (quelle documentation devrait vous dire comment le faire).

Si vous connaissez le chemin absolu vers vos modèles, vous pouvez également utiliser FileResourceLoader.

0

Depuis vous conformez projet Maven Votre fichier de vitesse doit être dans resources dossier

Et votre structure devrait être comme src-->main-->resources-->fileTemplates

J'utilise toujours en dessous de la configuration pour charger un des modèles:

velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "class,file"); 
velocityEngine.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.Log4JLogChute"); 
velocityEngine.setProperty("runtime.log.logsystem.log4j.logger", "VELLOGGER"); 
velocityEngine.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); 
velocityEngine.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogSystem");