To run GroovyFX programs we need to have groovyfx.jar
and jfxrt.jar
added to the classpath
. The JDK I am using is v1.8.0-ea
. JavaFX SDK is bundled with JDK from Java 7u4 and above.
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Intro.groovy: 3: unable to resolve class groovyx.javafx.GroovyFX
@ line 3, column 1.
import groovyx.javafx.GroovyFX
^
1 error
The above error is thrown if groovyfx.jar
is not found. The easiest way to fix this would be to use Grapes and annotate the source with @Grab('org.codehaus.groovyfx:groovyfx:0.3.1')
, which will download and add the groovyfx-0.3.1.jar
in the .groovy
directory.
Another way would be to download it from maven repository and add it to classpath manually (or use mvn
).
To add it manually, create a environment variable with name CLASSPATH
with value .;F:\javaLibs\groovyfx-0.3.1.jar;
(update the path F:\javaLibs
to reflect your directory preferences). In Windows the delimiter is ;
where as under GNU/Linux it is :
. This example uses Windows. There is a dot at the beginning so that the current working directory is also included. If the variable already exists, just append it to the end preceding the appropriate delimiter.
Caught: java.lang.NoClassDefFoundError: javafx/application/Application
java.lang.NoClassDefFoundError: javafx/application/Application
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
The above error is caused because Groovy could not find the jfxrt.jar
file in the classpath. To resolve this append %JAVA_HOME%\jre\lib\jfxrt.jar;
to the classpath variable.
The value of the CLASSPATH
should look like:
.;F:\javaLibs\groovyfx-0.3.1.jar;%JAVA_HOME%\jre\lib\jfxrt.jar;
These are the two main errors that gets between running GroovyFX programs. Let us run a sample program from the groovyfx.org website.
// Hello.groovy
import groovyx.javafx.GroovyFX
GroovyFX.start {
stage(title: "GroovyFX Hello World", visible: true) {
scene(fill: BLACK, width: 500, height: 250) {
hbox(padding: 60) {
text(text: "Groovy", font: "80pt sanserif") {
fill linearGradient(endX: 0, stops: [PALEGREEN, SEAGREEN])
}
text(text: "FX", font: "80pt sanserif") {
fill linearGradient(endX: 0, stops: [CYAN, DODGERBLUE])
effect dropShadow(color: DODGERBLUE, radius: 25, spread: 0.25)
}
}
}
}
}
Run it using:
groovy Hello.groovy
Or compile and run.
groovyc Hello.groovy
groovy Hello
This will give the output as shown below.