SWT Plattformunabhängig laden - verschiedene SWT .jar laden

internet

Top Contributor
Hallo,

ich programmiere derzeit ein Programm via Eclipse teilweise in Mac und teilweise in Windows, da ich ein SDK entsprechend ansteuern muss.

Nun habe ich aktuell ein Problem mit SWT, das ich beim Starten der App entsprechend laden muss, ansonsten bekomme ich ein Fehler, dass das SWT Plugin nicht gefunden wurde.
Could not load SWT library. Reasons: no swt-pi-win32-4952r11 in java.library.path:

Ich verwende aktuell diese Maven Dependency:

Java:
<dependency>
            <groupId>org.eclipse.platform</groupId>
            <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
            <version>3.120.0</version>
        </dependency>
   
        <dependency>
            <groupId>org.eclipse.platform</groupId>
            <artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
            <version>3.120.0</version>
        </dependency>

Ich habe diesen Beitrag gesehen:

Aktuell habe ich diese Methode:
Code:
private void loadSwtJar() {
        String osName = System.getProperty("os.name").toLowerCase();
        String swtFileName = null;

        if (osName.contains("win")) {
            swtFileName = "C:\\Users\\org\\eclipse\\platform\\org.eclipse.swt.win32.win32.x86_64\\3.120.0\\org.eclipse.swt.win32.win32.x86_64-3.120.0.jar";
        }
        if (osName.contains("mac")) {
            swtFileName = "C:\\Users\\org\\eclipse\\platform\\org.eclipse.swt.cocoa.macosx.x86_64\\3.120.0\\org.eclipse.swt.cocoa.macosx.x86_64-3.120.0.jar";
        }

        try {

            File jarFile = new File(swtFileName);

            URL url = jarFile.toURI().toURL();
            URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
            Class<?> urlClass = URLClassLoader.class;
            Method method = urlClass.getDeclaredMethod("addURL", new Class<?>[] { URL.class });
            method.setAccessible(true);
            method.invoke(urlClassLoader, new Object[] { url });

        } catch (Exception e) {
            throw new RuntimeException("Unable to add the SWT jar to the class path: " + swtFileName, e);
        }
    }

Leider bekomme ich diese Fehlermeldung:
SCHWERWIEGEND: java.lang.RuntimeException: Unable to add the SWT jar to the class path: C:\Users\org\eclipse\platform\org.eclipse.swt.win32.win32.x86_64\3.120.0\org.eclipse.swt.win32.win32.x86_64-3.120.0.jar

Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')

Dazu zwei Fragen:
1) wie kann ich das lösen (siehe Fehlermeldung)
2) Wie kann ich den Pfad zu den .jar - Dateien anpassen, sodass das aus dem Projekt (Maven Dependencies) entsprechend kommt? Oder muss ich die zwei .jar - Dateien besser irgendwo separat in ein Ressource - Ordner packen?

Danke für jede Hilfe!
 

Zurück
Oben