Portál AbcLinuxu, 2. listopadu 2025 01:33
println "Hello World!". Poté jsem ho chtěl spustit, zkusil jsem příkaz groovy hello.groovy a zobrazilo se Hello World!. Super! Tak jsem chtěl zkusit kompilaci do bytecode a spuštění .class souboru. Skompiloval jsem příkazem groovyc hello.groovy, ale když jsem to chtěl spustit příkazem java hello nahlasilo to chybu Exception in thread "main" java.lang.NoClassDefFoundError. Na internetu jsem zjistil, že mám nastavit CLASSPATH na cestu k groovy-all-*.jar.
Bohužel takovýto soubor na mém počítači nebyl. V komentáři k ebuildu je:
# We currently do not build the embeddable jar (which is created using JarJar). # We could provide that via an USE flag. # We also don't use automatic build rewriting as there seems to be already some level of support # in the upstream build systemtakže tam soubor není. Odinstaloval jsem groovy z portage a podle postupu z http://groovy.codehaus.org/Installing+Groovy jsem nainstaloval groovy 1.7.3. Když jsem zopakoval postup kompilace a spuštění tak to hlásí
Exception in thread "main" java.lang.NoClassDefFoundError: hello Caused by: java.lang.ClassNotFoundException: hello at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:319) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:264) Could not find the main class: hello. Program will exit.V mém CLASSPATH je
/opt/groovy/embeddable/groovy-all-1.7.3.jar
.
Zkoušel jsem i java -cp $CLASSPATH hello a výsledek byl stejný. Hledal jsem na internetu, ale vyřešit se mi to nepodařilo. Neví někdo co dělám špatně.
Řešení dotazu:
$java -cp $CLASPATH:./ hello Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/Script at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:632) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) at java.net.URLClassLoader.access$000(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:212) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:319) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:264) Caused by: java.lang.ClassNotFoundException: groovy.lang.Script at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:319) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:264) ... 11 more Could not find the main class: hello. Program will exit.
$ groovyc -cp $CLASSPATH:./ hello.groovy $ java -cp $CLASSPATH:./ hello Hello World $Pro větši pohodlí jsem do classpath přidal aktuální adresář:
export CLASSPATH=$CLASSPATH:./Poté to už šlo normálně. Děkuji za radu s aktuálním adresářem.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.