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.
Ich verwende aktuell diese Maven Dependency:
Ich habe diesen Beitrag gesehen:
Aktuell habe ich diese Methode:
Leider bekomme ich diese Fehlermeldung:
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!
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:
Select correct SWT jar for your OS and JVM at runtime
Here is a method to dynamically classload the correct SWT jar depending on your operating system and whether it is 32 or 64 bit. It relies on a little code smell (hack) using reflection but this is much simpler solution than creating a custom classloader and then handling all the associated...
www.chrisnewland.com
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!