How do I fix the controlsfx demo program to initialize class org.controlsfx.glyphfont.FontAwesome? - javafx

The controlsfx JavaFX library has a demo program and some controls fail to run, such as List Selection View, or List Action View or BreadCrumbBar.
I re-tested this on a new Windows 10 PC, with JDK11 and Gradle 5.5 freshly installed. I downloaded the branch 9 .zip, verified that the module-info.java files are present, and entered
gradlew run
For the above mentioned examples, the console shows:
Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: Could not initialize class org.controlsfx.glyphfont.FontAwesome
at org.controlsfx.samples/org.controlsfx.samples.HelloListActionView.createActions(HelloListActionView.java:144)
at org.controlsfx.samples/org.controlsfx.samples.HelloListActionView.getPanel(HelloListActionView.java:63)
at org.controlsfx.fxsampler/fxsampler.SampleBase.buildSample(SampleBase.java:77)
at org.controlsfx.fxsampler/fxsampler.FXSampler.buildSampleTabContent(FXSampler.java:397)
at org.controlsfx.fxsampler/fxsampler.FXSampler.updateTab(FXSampler.java:305)
at org.controlsfx.fxsampler/fxsampler.FXSampler.changeSample(FXSampler.java:296)
at org.controlsfx.fxsampler/fxsampler.FXSampler.lambda$start$1(FXSampler.java:159)
JAVA_HOME is C:\Program Files\Java\jdk-11.0.3
gradle --version
------------------------------------------------------------
Gradle 5.5
------------------------------------------------------------
Build time: 2019-06-28 17:36:05 UTC
Revision: 83820928f3ada1a3a1dbd9a6c0d47eb3f199378f
Kotlin: 1.3.31
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM: 11.0.3 (Oracle Corporation 11.0.3+12-LTS)
OS: Windows 10 10.0 amd64
I'd like to take advantage of FontAwesome as well as the above mentioned controls.
I experimented with
JDK 11, 11.0.1, 11.0.2, 11.0.2
Gradle 5.2, 5.5
Command line
IntelliJ
Another PC I usually develop on

ControlsFX has a large number of external dependencies which are handled in the build.gradle file.
If your project does not use gradle to build the library, but instead it imports a .jar of it, then you should add all those options to the VM. To do that in IntelliJ, go to Edit Configuration, there you can find a VM options field.
You can try to copy and paste these options:
--add-exports=javafx.graphics/com.sun.javafx.scene=org.controlsfx.controls --add-exports=javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls --add-exports=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls --add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=org.controlsfx.controls --add-exports=javafx.controls/com.sun.javafx.scene.control=org.controlsfx.controls --add-exports=javafx.controls/com.sun.javafx.scene.control.inputmap=org.controlsfx.controls --add-exports=javafx.base/com.sun.javafx.event=org.controlsfx.controls --add-exports=javafx.base/com.sun.javafx.collections=org.controlsfx.controls --add-exports=javafx.base/com.sun.javafx.runtime=org.controlsfx.controls --add-exports=javafx.web/com.sun.webkit=org.controlsfx.controls --add-exports=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls
This worked for me. I was facing the same issue with ControlsFX 11.0, while using ListSelectionView.

Related

URLClassLoader and Multi-release jar

I use the URLClassLoader to dynamically load JDBC drivers into my application.
My application is compiled under OpenJDK15. I cannot upgrade since some drivers would get issues under higher versions.
One of the drivers is using truffle-api-22.2.0.jar, which has support for two Java versions:
truffle-api-22.2.0.jar\META-INF\versions\11 and 17
When the jar is loaded, I get this exception:
java.lang.UnsupportedClassVersionError: META-INF/versions/17/module-info has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 59.0
java.lang.UnsupportedClassVersionError: META-INF/versions/17/module-info has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 59.0
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:825)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:723)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:646)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:604)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:576)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at com.wisecoders.dbs.dbms.driver.model.a.a(DriverClassLoader.java:132)
at com.wisecoders.dbs.dbms.driver.model.a.b(DriverClassLoader.java:110)
at com.wisecoders.dbs.dbms.driver.model.a.a(DriverClassLoader.java:88)
at com.wisecoders.dbs.dbms.driver.model.a.a(DriverClassLoader.java:66)
at com.wisecoders.dbs.dbms.driver.model.a.<init>(DriverClassLoader.java:34)
I used:
urlClassLoader = new URLClassLoader( urlsArray, OneClassFromMyCode.class.getClassLoader() );
urlClassLoader.loadClass( className );
The URLClassLoader documentation states that this should work with multi-version jars.
Which could be the issue?

Could not load file or assembly 'CefSharp.Core.Runtime.DLL' or one of its dependencies. The specified module could not be found

We have installed CerfSharp using the NuGet Pakage Manager and created a class library which loads a ChromiumWebBrowser, it works fine on VisualStudio-2019,
When we deployed the class library(DLL) into target location along with required cefsharp supported files as mentioned the readme.txt, which throws following exception
Error Message: Could not load file or assembly 'CefSharp.Core.Runtime.DLL' or one of its dependencies. The specified module could not be found.
Stack Trace: at CefSharp.Cef.get_IsInitialized()
could anyone help us on this issue?
Added following cefsharp supported files in the target deployment location:
CEF core library.
libcef.dll
Crash reporting library.
chrome_elf.dll
Unicode support data.
icudtl.dat
V8 snapshot data.
snapshot_blob.bin
v8_context_snapshot.bin
[System Info]:
CefSharp Version=91.1.230.0
OS: Windows 7 x64
Visual Studio Version:
Microsoft Visual Studio Enterprise 2019
Version 16.7.8
.NET Framework: 4.8
Thanks,

Groovie Gorilla and GPIO

I want to use RaspberryIO library with dotnet core version 3.1 on Ubuntu 20.10.
When it comes to use
Pi.Init<BootstrapWiringPi>();
I got error:
Unhandled exception. System.DllNotFoundException: Unable to load shared library 'libwiringPi.so.2.52' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibwiringPi.so.2.52: cannot open shared object file: No such file or directory
The same code works perfectly on Raspbian.
I use:
Raspberry Pi 4
In my case (Rpi3 + Ubuntu 20.04 x64 + dotnet core 3.1):
clone https://github.com/WiringPi/WiringPi
build
copy libwiringPi.so.2.60 and gpio to app folder
rename libwiringPi.so.2.60 to libwiringPi.so.2.52
and Pi.Init < BootstrapWiringPi >( );
with TestLedBlinking() is work.

Could not load assembly Microsoft.Threading.Tasks.dll

I am receiving the following error on iOS and Android project. Anybody has any workaround for this issue? This post recommends a workaround but the steps are vague.
C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2,2): Error: Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'Microsoft.Threading.Tasks.dll'
at Xamarin.Android.Tuner.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(ICollection1 assemblies, AssemblyDefinition assembly, Boolean topLevel)
at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(ICollection1 assemblies, AssemblyDefinition assembly, Boolean topLevel)
at Xamarin.Android.Tasks.ResolveAssemblies.Execute() (Braemar.Vers.Mobile.Droid)
I think that these two paths should have this file but I couldn't find it.
C:\Program Files (x86)\Reference
Assemblies\Microsoft\Framework\MonoAndroid\v1.0
C:\Program Files (x86)\Reference
Assemblies\Microsoft\Framework\MonoTouch\v1.0
Xamarin Studio:
Version 5.10.2 (build 56)
Installation UUID: 88f72eda-5030-43e9-8d1b-7658e8a17627
Runtime:
Microsoft .NET 4.0.30319.42000
GTK+ 2.24.23 (MS-Windows theme)
GTK# 2.12.30
Xamarin.Android:
Version: 6.0.1.10 (Business Edition)
Android SDK: C:\Android\android-sdk
Supported Android versions:
2.3 (API level 10)
4.0.3 (API level 15)
4.1 (API level 16)
4.2 (API level 17)
4.3 (API level 18)
4.4 (API level 19)
4.4.87 (API level 20)
5.0 (API level 21)
5.1 (API level 22)
6.0 (API level 23)
SDK Tools Version: 24.4.1
SDK Platform Tools Version: 23.1.0 rc1
SDK Build Tools Version: 23.0.2
Java SDK: C:\Program Files (x86)\Java\jdk1.7.0_71
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) Client VM (build 24.71-b01, mixed mode, sharing)
Build Information:
Release ID: 510020056
Git revision: bb74ff467c62ded42b7b7ac7fdd2edc60f8647b0
Build date: 2016-01-26 15:49:39-05
Xamarin addins: 8b797d7ba24d5abab226c2cf9fda77f666263f1b
Build lane: monodevelop-windows-cycle6-c6sr1
Operating System:
Windows 10.0.10586.0 (64-bit)
Project Information:
PCL 4.5 - Profile 7
I had such problem. It was caused by missing nuget packages in Droid project. Some of my subprojects referenced packages which had "Microsoft.Threading.Tasks" in references (PCLStorage, Restsharp portable). But in main Droid project I did not added this packages. After adding missing packages (PCLStorage, Restsharp portable) to Droid everything started work.
Is there any reason you are using Profile7?
I would recommend you create a project with profile 259, that is the default one for Xamarin Forms projects.
Otherwise you need to get a reference to that DLL. Normally I try installing the BCL NuGet package as my first port of call, but it might not be included in there: https://www.nuget.org/packages/Microsoft.Bcl/
Update
If you are having linker issues, you can skip certain assemblies: https://developer.xamarin.com/guides/ios/advanced_topics/linker/#Skipping_Assemblies
Sometimes the linker is more aggressive than anticipated.
I had the same problem.
Right click and select Options for the Android project.
Go to Build->General and uncheck "Use MSBuild build engine (recommended for this project type)"
Now I could build again!

tomcat eclipse mssql driver demanding Java 1.6

I started writing my servlet in Java 1.6 for tomcat 7, but then I later needed to roll back to Java 1.5 for tomcat 6. I'm using eclipse. For some reason though, when I try to run my servlet it gives me the following error:
SEVERE: Java Runtime Environment (JRE) version 1.6 is not supported by this driver. Please use the JDBC 4 driver (sqljdbc4.jar) instead.
Jun 20, 2011 12:33:40 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Auth threw exception
java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.6 is not supported by this driver. Please use the JDBC 4 driver (sqljdbc4.jar) instead.
Now originally I had sqljdbc4.jar in my WEB-INF/lib directory but I swapped it out for sqljdbc.jar so that it would be 1.5 compatible. That's when I started getting the error. Hunting around in the properties panels, I saw that JVM 1.6 was still in the Build Path libraries so I deleted those. But now it can't find HTTPServlet!
I added back a servlet.jar file I had but it just gives me the "version 1.6 is not supported by this driver" message. Curiously, I also have to use the oracle jdbc driver for this servlet and it is not giving me these errors when I backgraded the project and the driver jar to the 1.5 compatible version.
How do I get the eclipse project to not think it is 1.6?
You may need to change the Java facet from 1.6 to 1.5:
Project properties → Project Facets → Java → 1.5

Resources