Reputation: 1841
I'm working on XUbuntu 13.04 and developing swing applications. As I just wanted to try that application I ran into java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
on startup.
I've found several questions about server/client vms and noticed that I have a server VM and that for Linux 64 there is no client VM anymore. But nevertheless IMHO this problem shouldn't depend on which VM I'm running on.
Has anybody else noticed that problem and has solved it? What am I doing wrong? With 64bit jdk everything works fine, but when I try to use the 32bit jdk the startup fails.
Thanks in advance!
P.S.: Java version is 1.7.0_25
and same with 1.7.0_09
EDIT
When using headless mode, the following exceptions occur:
java.lang.reflect.InvocationTargetException
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1272)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1247)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1349)
at Main.main(Main.java:218)
Caused by: java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
at java.awt.Frame.<init>(Frame.java:385)
at javax.swing.JFrame.<init>(JFrame.java:180)
at ..MyFrame.<init>(MyFrame.java:23)
Upvotes: 23
Views: 109192
Reputation: 52807
On Ubuntu 22.04, my solution was this:
sudo apt update
sudo apt install default-jre
Now my run command (which previously caused the error) works!: ./thinkorswim_installer.sh
.
I found the sudo apt install default-jre
command here: https://ubuntu.com/tutorials/install-jre#2-installing-openjdk-jre. I found it by Googling for "ubuntu install java".
For anyone wondering, I saw the error when trying to install the Charles Schwab / TD Ameritrade ThinkOrSwim desktop app on Linux Ubuntu 22.04. Here is my full run command and error output:
Finances/Charles Schwab$ ./thinkorswim_installer.sh
Starting Installer ...
An error occurred:
java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
Error log: /tmp/install4jError2805803867045792403.log
java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
at java.desktop/java.awt.Color.<clinit>(Color.java:275)
at com.install4j.runtime.installer.frontend.GUIHelper.<clinit>(GUIHelper.java:45)
at com.install4j.runtime.installer.frontend.headless.AbstractHeadlessScreenExecutor.init(AbstractHeadlessScreenExecutor.java:86)
at com.install4j.runtime.installer.frontend.headless.ConsoleScreenExecutor.<init>(ConsoleScreenExecutor.java:25)
at com.install4j.runtime.installer.frontend.headless.InstallerConsoleScreenExecutor.<init>(InstallerConsoleScreenExecutor.java:6)
at com.install4j.runtime.installer.Installer.getScreenExecutor(Installer.java:84)
at com.install4j.runtime.installer.Installer.runInProcess(Installer.java:60)
at com.install4j.runtime.installer.Installer.main(Installer.java:46)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:84)
at com.install4j.runtime.launcher.UnixLauncher.start(UnixLauncher.java:69)
at install4j.Installer443923295.main(Unknown Source)
Upvotes: 1
Reputation: 408
java.lang.NoClassDefFoundError: Could not initialize class java.awt.Color com.lowagie.text.Font.setColor(Unknown Source)
On Ubuntu 22.04 using "sudo apt-get install libxtst6:i386" command issue resolved.
Upvotes: 0
Reputation: 2989
Had the missing awt library problem on Ubuntu 20.04. Fixed it by installing openjdk-11-jre:
sudo apt-get install openjdk-11-jre
Upvotes: 27
Reputation: 11085
Thanks for @Bertram's answer. As a complementary, I met similar issue when I'm using Fedora, for anyone who is using CentOS/Fedora and Redhat, please try yum install libXtst
.
Upvotes: 5
Reputation: 1841
Okay, finally I've found the answer. Thanks for the effort! The problem is that I had libxtst6
installed but only the 64bit-version of it.
sudo apt-get install libxtst6:i386
did the trick for me.
How did I find this answer? I ldd
ed around a bit, but nothing, as you can see in the following:
$ ldd jdk1.7.0_25_x86/jre/lib/i386/xawt/libmawt.so
linux-gate.so.1 => (0xf7769000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf76ee000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf76c2000)
libawt.so => jdk1.7.0_25_x86/jre/lib/i386/xawt/../libawt.so (0xf760f000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf75fd000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf74c9000)
libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xf74bf000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf74ba000)
libXtst.so.6 => /usr/lib/i386-linux-gnu/libXtst.so.6 (0xf74b2000)
libXi.so.6 => /usr/lib/i386-linux-gnu/libXi.so.6 (0xf74a2000)
libjava.so => jdk1.7.0_25_x86/jre/lib/i386/xawt../libjava.so (0xf747e000)
libjvm.so => not found
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf72d5000)
/lib/ld-linux.so.2 (0xf776a000)
libjvm.so => not found
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf72b3000)
libjvm.so => not found
libverify.so => java/jdk1.7.0_25_x86/jre/lib/i386/xawt/../libverify.so (0xf72a7000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf72a2000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf729b000)
libjvm.so => not found
So that was the point when I ended trusting my IDE and started a sample application on the command line. And the command line again was nice to me:
$ jdk1.7.0_25_x86/bin/java Main
Exception in thread "main" java.lang.UnsatisfiedLinkError: jdk1.7.0_25_x86/jre/lib/i386/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1843)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1061)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1087)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1646)
at java.awt.Toolkit.<clinit>(Toolkit.java:1668)
at java.awt.Component.<clinit>(Component.java:595)
at Main.main(Main.java:5)
Upvotes: 47