Discussion:
How to access JavaFx class library from Kawa?
Arie van Wingerden
2018-10-28 12:56:42 UTC
Permalink
Hi,

when trying to run your JavaFx example from here:
https://per.bothner.com/blog/2011/JavaFX-using-Kawa-intro/ I get errors
like: Exception in thread "main" java.lang.NoClassDefFoundError:
javafx/geometry/Orientation.

This is understandable, since I only unpacked JavaFx in a folder, but I
don't know how to inform Kawa how to find JavaFx stuff.

As you may guess I am not at all acquainted with Java :)

I am on Windows 10 and have OpenJdk 11.08 and JavaFx 11.
Also, I added the bin dir of openjdk to my system path.

So, please tell me how to enable using JavaFx as well ...

Many thanks!

/Arie
Sudarshan S Chawathe
2018-10-28 13:43:41 UTC
Permalink
Post by Arie van Wingerden
https://per.bothner.com/blog/2011/JavaFX-using-Kawa-intro/ I get errors
javafx/geometry/Orientation.
This is understandable, since I only unpacked JavaFx in a folder, but I
don't know how to inform Kawa how to find JavaFx stuff.
If you set CLASSPATH for Java one way or the other (environment
variable, command-line option, ...) to include the JavaFX .jar files
then you should be able to use JavaFX from Kawa as well. At least, that
has been my experiance on a standard Debian-based setup.

The CLASSPATH syntax allows using "*" to indicate "all jars in
directory" which I find useful in such cases to avoid having to
enumerate jars individually.

Regards,

-chaw
Arie van Wingerden
2018-10-28 14:21:41 UTC
Permalink
Hi Chaw,

thx!

Now tried this:
set CLASSPATH=E:\Programs\openjdk\lib\*;E:\Programs\openjfx\lib\*;.\*
last one is for jars in current dir.

But it still fails because it cannot find javafx/geometry/Orientation.

In openjfx\lib I see:
javafx-swt.jar
javafx.base.jar
javafx.controls.jar
javafx.fxml.jar
javafx.graphics.jar
javafx.media.jar
javafx.properties
javafx.swing.jar
javafx.web.jar
src.zip

But no "geometry" or similar.

/Arie
Post by Sudarshan S Chawathe
Post by Arie van Wingerden
https://per.bothner.com/blog/2011/JavaFX-using-Kawa-intro/ I get errors
javafx/geometry/Orientation.
This is understandable, since I only unpacked JavaFx in a folder, but I
don't know how to inform Kawa how to find JavaFx stuff.
If you set CLASSPATH for Java one way or the other (environment
variable, command-line option, ...) to include the JavaFX .jar files
then you should be able to use JavaFX from Kawa as well. At least, that
has been my experiance on a standard Debian-based setup.
The CLASSPATH syntax allows using "*" to indicate "all jars in
directory" which I find useful in such cases to avoid having to
enumerate jars individually.
Regards,
-chaw
Arie van Wingerden
2018-10-28 15:19:07 UTC
Permalink
With a bit of trial and error I got it to work.

Now, when I start a command prompt for Kawa, I initially set an environment
variable:
set KAWA_USERPATH =
E:\Programs\openjfx\lib\javafx.base.jar;E:\Programs\openjfx\lib\javafx.controls.jar;E:\Programs\openjfx\lib\javafx.fxml.jar;E:\Programs\openjfx\lib\javafx.graphics.jar;E:\Programs\openjfx\lib\javafx.media.jar;E:\Programs\openjfx\lib\javafx.swing.jar;E:\Programs\openjfx\lib\javafx.web.jar;E:\Programs\openjfx\lib\javafx-swt.jar

Also I slightly modified kawa.bat and add my path to KAWA-EXTRA-PATH:
set KAWA_EXTRA_PATH =
"%KAWA_HOME%\lib\jline.jar;%KAWA_HOME%\lib\domterm.jar;%KAWA_HOME%\lib\servlet.jar;"%KAWA_USERPATH%

In this way it works!

Please tell me if there is a more elegant way to do this ...

Thx!

/Arie
Post by Arie van Wingerden
Hi Chaw,
thx!
set CLASSPATH=E:\Programs\openjdk\lib\*;E:\Programs\openjfx\lib\*;.\*
last one is for jars in current dir.
But it still fails because it cannot find javafx/geometry/Orientation.
javafx-swt.jar
javafx.base.jar
javafx.controls.jar
javafx.fxml.jar
javafx.graphics.jar
javafx.media.jar
javafx.properties
javafx.swing.jar
javafx.web.jar
src.zip
But no "geometry" or similar.
/Arie
Post by Sudarshan S Chawathe
Post by Arie van Wingerden
https://per.bothner.com/blog/2011/JavaFX-using-Kawa-intro/ I get errors
javafx/geometry/Orientation.
This is understandable, since I only unpacked JavaFx in a folder, but I
don't know how to inform Kawa how to find JavaFx stuff.
If you set CLASSPATH for Java one way or the other (environment
variable, command-line option, ...) to include the JavaFX .jar files
then you should be able to use JavaFX from Kawa as well. At least, that
has been my experiance on a standard Debian-based setup.
The CLASSPATH syntax allows using "*" to indicate "all jars in
directory" which I find useful in such cases to avoid having to
enumerate jars individually.
Regards,
-chaw
Arie van Wingerden
2018-10-28 15:21:52 UTC
Permalink
Hi Chaw,

that's weird, since I got it to work without having that :)
See my previous post listing all jars I needed obviously.

Thx!
Post by Arie van Wingerden
With a bit of trial and error I got it to work.
Now, when I start a command prompt for Kawa, I initially set an
set KAWA_USERPATH =
E:\Programs\openjfx\lib\javafx.base.jar;E:\Programs\openjfx\lib\javafx.controls.jar;E:\Programs\openjfx\lib\javafx.fxml.jar;E:\Programs\openjfx\lib\javafx.graphics.jar;E:\Programs\openjfx\lib\javafx.media.jar;E:\Programs\openjfx\lib\javafx.swing.jar;E:\Programs\openjfx\lib\javafx.web.jar;E:\Programs\openjfx\lib\javafx-swt.jar
set KAWA_EXTRA_PATH =
"%KAWA_HOME%\lib\jline.jar;%KAWA_HOME%\lib\domterm.jar;%KAWA_HOME%\lib\servlet.jar;"%KAWA_USERPATH%
In this way it works!
Please tell me if there is a more elegant way to do this ...
Thx!
/Arie
Post by Arie van Wingerden
Hi Chaw,
thx!
set CLASSPATH=E:\Programs\openjdk\lib\*;E:\Programs\openjfx\lib\*;.\*
last one is for jars in current dir.
But it still fails because it cannot find javafx/geometry/Orientation.
javafx-swt.jar
javafx.base.jar
javafx.controls.jar
javafx.fxml.jar
javafx.graphics.jar
javafx.media.jar
javafx.properties
javafx.swing.jar
javafx.web.jar
src.zip
But no "geometry" or similar.
/Arie
Post by Arie van Wingerden
Post by Arie van Wingerden
https://per.bothner.com/blog/2011/JavaFX-using-Kawa-intro/ I get
errors
Post by Arie van Wingerden
javafx/geometry/Orientation.
This is understandable, since I only unpacked JavaFx in a folder, but I
don't know how to inform Kawa how to find JavaFx stuff.
If you set CLASSPATH for Java one way or the other (environment
variable, command-line option, ...) to include the JavaFX .jar files
then you should be able to use JavaFX from Kawa as well. At least, that
has been my experiance on a standard Debian-based setup.
The CLASSPATH syntax allows using "*" to indicate "all jars in
directory" which I find useful in such cases to avoid having to
enumerate jars individually.
Regards,
-chaw
Arie van Wingerden
2018-10-29 07:22:15 UTC
Permalink
During my search for a solution, I found out that kawa.bat uses an
unnecessary construction:
set
KAWA_EXTRA_PATH="%KAWA_HOME%\lib\jline.jar;%KAWA_HOME%\lib\domterm.jar;%KAWA_HOME%\lib\servlet.jar"

This can be much shorter and easier and less error prone using the asterisk:
set KAWA_EXTRA_PATH=%KAWA_HOME%\lib\*
Post by Arie van Wingerden
Hi Chaw,
that's weird, since I got it to work without having that :)
See my previous post listing all jars I needed obviously.
Thx!
Post by Arie van Wingerden
With a bit of trial and error I got it to work.
Now, when I start a command prompt for Kawa, I initially set an
set KAWA_USERPATH =
E:\Programs\openjfx\lib\javafx.base.jar;E:\Programs\openjfx\lib\javafx.controls.jar;E:\Programs\openjfx\lib\javafx.fxml.jar;E:\Programs\openjfx\lib\javafx.graphics.jar;E:\Programs\openjfx\lib\javafx.media.jar;E:\Programs\openjfx\lib\javafx.swing.jar;E:\Programs\openjfx\lib\javafx.web.jar;E:\Programs\openjfx\lib\javafx-swt.jar
set KAWA_EXTRA_PATH =
"%KAWA_HOME%\lib\jline.jar;%KAWA_HOME%\lib\domterm.jar;%KAWA_HOME%\lib\servlet.jar;"%KAWA_USERPATH%
In this way it works!
Please tell me if there is a more elegant way to do this ...
Thx!
/Arie
Post by Arie van Wingerden
Hi Chaw,
thx!
set CLASSPATH=E:\Programs\openjdk\lib\*;E:\Programs\openjfx\lib\*;.\*
last one is for jars in current dir.
But it still fails because it cannot find javafx/geometry/Orientation.
javafx-swt.jar
javafx.base.jar
javafx.controls.jar
javafx.fxml.jar
javafx.graphics.jar
javafx.media.jar
javafx.properties
javafx.swing.jar
javafx.web.jar
src.zip
But no "geometry" or similar.
/Arie
Post by Arie van Wingerden
Post by Arie van Wingerden
https://per.bothner.com/blog/2011/JavaFX-using-Kawa-intro/ I get
errors
Post by Arie van Wingerden
javafx/geometry/Orientation.
This is understandable, since I only unpacked JavaFx in a folder, but
I
Post by Arie van Wingerden
don't know how to inform Kawa how to find JavaFx stuff.
If you set CLASSPATH for Java one way or the other (environment
variable, command-line option, ...) to include the JavaFX .jar files
then you should be able to use JavaFX from Kawa as well. At least, that
has been my experiance on a standard Debian-based setup.
The CLASSPATH syntax allows using "*" to indicate "all jars in
directory" which I find useful in such cases to avoid having to
enumerate jars individually.
Regards,
-chaw
Sudarshan S Chawathe
2018-10-28 15:18:45 UTC
Permalink
Post by Arie van Wingerden
set CLASSPATH=E:\Programs\openjdk\lib\*;E:\Programs\openjfx\lib\*;.\*
last one is for jars in current dir.
But it still fails because it cannot find javafx/geometry/Orientation.
javafx-swt.jar
javafx.base.jar
javafx.controls.jar
javafx.fxml.jar
javafx.graphics.jar
javafx.media.jar
javafx.properties
javafx.swing.jar
javafx.web.jar
src.zip
But no "geometry" or similar.
/Arie
The CLASSPATH should include jfxrt.jar, which has the geometry package.
In my setup, that file's location is (not the "ext" subdirectory):

/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar

Regards,

-chaw
Loading...