Utiliser les classes d'une bibliothèque externe (celles de Groovy)
Salut, Ô programmeur, programmeuse.
Allons droit au but !!!
Etant revenu des vacances, j'ai décidé de m'y (re)mettre au langage Java. A vrai dire, si j'ai pris cette decision, c'est surtout grâce au langage de script Groovy qui en quelque sorte redonne une seconde jeunesse à Java.
J'ai donc téléchargé groovy (le fichier avec l'installateur, l'executable), version 1.6.4 que j'utilise avec le jdk version 1.5.0_10.
Par la suite l'installateur m'a crée la variable d'environnement :
GROOVY_HOME, ayant pour valeur : C:\Program Files\Groovy\Groovy-1.6.4
L'installateur m'a modifié la variable d'environnement :
PATH, en ajoutant : %GROOVY_HOME%\bin
Et j'ai crée manuellement la variable d'environnement :
CLASSPATH ayant pour valeur : C:\Program Files\Groovy\Groovy-1.6.4\embeddable\groovy-all-1.6.4.jar;C:\Program Files\Java\jdk1.5.0_10\lib
Pour tester le tout, j'ai utilisé ce code source groovytest.groovy :
Code:
1 2 3
|
println('Hello World : ' + argument)
return "Valeur de retour" |
et ce code source MaClasseGroovy.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import groovy.lang.Script;
import java.io.File;
import java.io.IOException;
import org.codehaus.groovy.control.CompilationFailedException;
public class MaClasseGroovy{
public static void main(String[] args){
GroovyShell shell = new GroovyShell();
Script script;
try {
// Chargement du script groovy
script = shell.parse(new File("./groovytest.groovy"));
Binding binding = new Binding();
// Création d'un paramètre
binding.setVariable("argument", "Saint Nicolas");
script.setBinding(binding);
// Exécution du script
Object retour = script.run();
// Affichage de la valeur de retour du script
System.out.println(retour);
}
catch (CompilationFailedException e){
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
} |
Ces deux codes sources sont tirés de l'article "Introduction au langage de script Groovy" trés bon tutoriel.
Pour compiler j'utilise la super Invite de commande de Windows XP.
Je tape :
javac MaClasseGroovy.java
et
java MaClasseGroovy
et voici ce que m'affiche la console :
C:\Program Files\Java\jdk1.5.0_10\lib>java MaClasseGroovy
Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Opcodes
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getDeclaredMethods(Unknown Source)
at org.codehaus.groovy.reflection.CachedClass$3$1.run(CachedClass.java:83)
at java.security.AccessController.doPrivileged(Native Method)
at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:80)
at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:78)
at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:33)
at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:20)
at org.codehaus.groovy.reflection.CachedClass.getMethods(CachedClass.java:252)
at groovy.lang.MetaClassImpl.addInterfaceMethods(MetaClassImpl.java:365)
at groovy.lang.MetaClassImpl.fillMethodIndex(MetaClassImpl.java:289)
at groovy.lang.MetaClassImpl.initialize(MetaClassImpl.java:2890)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:106)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:65)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:28)
at org.codehaus.groovy.runtime.InvokerHelper.<clinit>(InvokerHelper.java:47)
at groovy.lang.GroovyObjectSupport.<init>(GroovyObjectSupport.java:32)
at groovy.lang.Binding.<init>(Binding.java:32)
at groovy.lang.GroovyShell.<init>(GroovyShell.java:55)
at MaClasseGroovy.main(MaClasseGroovy.java:16)Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Opcodes
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 33 more
Y'a-t-il des personnes qui sauraient d'ou vient le problème ?
Je vous reMercie pour votre aide.