Portál AbcLinuxu, 7. května 2025 10:00
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.