diff --git a/common-gui/src/main/java/slash/navigation/gui/OSXHelper.java b/common-gui/src/main/java/slash/navigation/gui/OSXHelper.java
index 6c80142621..a143c6413c 100644
--- a/common-gui/src/main/java/slash/navigation/gui/OSXHelper.java
+++ b/common-gui/src/main/java/slash/navigation/gui/OSXHelper.java
@@ -28,7 +28,6 @@
import java.util.logging.Logger;
import static slash.common.helpers.ExceptionHelper.getLocalizedMessage;
-import static slash.common.system.Platform.isJava9OrLater;
/**
* Sets the dock icon for Mac OS X for RouteConverter.
@@ -82,7 +81,7 @@ private OSXHandler(String proxySignature, Object target, Method handler) {
private static void createProxy(OSXHandler adapter, String handlerClassName, String setMethodName) {
try {
initializeApplicationObject();
- Class> handlerClass = Class.forName((isJava9OrLater() ? "java.awt.desktop." : "com.apple.eawt.") + handlerClassName);
+ Class> handlerClass = Class.forName("java.awt.desktop." + handlerClassName);
Method setHandlerMethod = application.getClass().getDeclaredMethod(setMethodName, handlerClass);
Object osxAdapterProxy = Proxy.newProxyInstance(OSXHandler.class.getClassLoader(), new Class>[]{handlerClass}, adapter);
setHandlerMethod.invoke(application, osxAdapterProxy);
diff --git a/common/src/main/java/slash/common/io/Transfer.java b/common/src/main/java/slash/common/io/Transfer.java
index 6d7a159c8b..83eaf19d56 100644
--- a/common/src/main/java/slash/common/io/Transfer.java
+++ b/common/src/main/java/slash/common/io/Transfer.java
@@ -41,6 +41,7 @@
import static java.lang.Double.isNaN;
import static java.lang.Integer.toHexString;
import static java.lang.Math.*;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static java.text.DateFormat.MEDIUM;
import static java.text.DateFormat.SHORT;
import static java.util.Calendar.*;
@@ -343,12 +344,7 @@ public static Integer[] toArray(int[] ints) {
}
public static String encodeUri(String uri) {
- try {
- return URLEncoder.encode(uri, UTF8_ENCODING);
- } catch (UnsupportedEncodingException e) {
- log.severe("Cannot encode uri " + uri + ": " + e);
- return uri;
- }
+ return URLEncoder.encode(uri, UTF_8);
}
public static String encodeUmlauts(String string) {
@@ -366,12 +362,7 @@ public static String encodeUriButKeepSlashes(String uri) {
}
public static String decodeUri(String uri) {
- try {
- return URLDecoder.decode(uri, UTF8_ENCODING);
- } catch (UnsupportedEncodingException e) {
- log.severe("Cannot decode uri " + uri + ": " + e);
- return uri;
- }
+ return URLDecoder.decode(uri, UTF_8);
}
private static final char URI_ESCAPE_CHAR = '%';
diff --git a/common/src/main/java/slash/common/jarinjar/ClassPathURLConnection.java b/common/src/main/java/slash/common/jarinjar/ClassPathURLConnection.java
index 23a182bc0c..bd98fc23e2 100644
--- a/common/src/main/java/slash/common/jarinjar/ClassPathURLConnection.java
+++ b/common/src/main/java/slash/common/jarinjar/ClassPathURLConnection.java
@@ -27,7 +27,7 @@
import java.net.URLConnection;
import static java.net.URLDecoder.decode;
-import static slash.common.io.Transfer.UTF8_ENCODING;
+import static java.nio.charset.StandardCharsets.UTF_8;
/**
* An {@link URLConnection} that reads URLs from the classpath.
@@ -46,11 +46,11 @@ public void connect() {
}
public InputStream getInputStream() throws IOException {
- String file = decode(url.getFile(), UTF8_ENCODING);
+ String file = decode(url.getFile(), UTF_8);
InputStream result = classLoader.getResourceAsStream(file);
if (result == null) {
throw new MalformedURLException("Could not open InputStream for URL '" + url + "'");
}
return result;
}
-}
\ No newline at end of file
+}
diff --git a/common/src/main/java/slash/common/system/Platform.java b/common/src/main/java/slash/common/system/Platform.java
index 31d395db13..0d57a23b24 100644
--- a/common/src/main/java/slash/common/system/Platform.java
+++ b/common/src/main/java/slash/common/system/Platform.java
@@ -45,29 +45,11 @@ public static String getPlatform() {
System.getProperty("os.arch");
}
- static boolean hasJavaFX(String vendor, String javaVersion) {
- return vendor.contains("Oracle") &&
- javaVersion.compareTo("1.7.0_40") >= 0 &&
- !isJavaLaterThan(javaVersion, 11);
- }
-
- public static boolean hasJavaFX() {
- return hasJavaFX(System.getProperty("java.vendor"), System.getProperty("java.version"));
- }
-
static boolean isJavaLaterThan(String javaVersion, int version) {
String versionString = version < 9 ? "1." + version : Integer.toString(version);
return new Version(javaVersion).isLaterOrSameVersionThan(new Version(versionString));
}
- public static boolean isJava9OrLater() {
- return isJavaLaterThan(System.getProperty("java.version"), 9);
- }
-
- public static boolean isJava15OrLater() {
- return isJavaLaterThan(System.getProperty("java.version"), 15);
- }
-
public static String getJava() {
return System.getProperty("java.vendor") + " Java " + System.getProperty("java.version") + " (" + getBits() + "-bit)";
}
diff --git a/common/src/test/java/slash/common/system/PlatformTest.java b/common/src/test/java/slash/common/system/PlatformTest.java
index df007f013e..d6c14d9074 100644
--- a/common/src/test/java/slash/common/system/PlatformTest.java
+++ b/common/src/test/java/slash/common/system/PlatformTest.java
@@ -77,20 +77,4 @@ public void testIsJavaLaterThan() {
assertTrue(isJavaLaterThan("15", 15));
assertTrue(isJavaLaterThan("16", 15));
}
-
- @Test
- public void testHasJavaFX() {
- assertFalse(hasJavaFX("Oracle", "1.7.0"));
- assertTrue(hasJavaFX("Oracle", "1.8.0"));
- assertFalse(hasJavaFX("OpenJDK", "1.8.0"));
- assertTrue(hasJavaFX("Oracle", "9"));
- assertFalse(hasJavaFX("OpenJDK", "9"));
- assertTrue(hasJavaFX("Oracle", "10"));
- assertFalse(hasJavaFX("OpenJDK", "10"));
- assertTrue(hasJavaFX("Oracle", "10.0.1"));
- assertFalse(hasJavaFX("OpenJDK", "10.0.1"));
- assertFalse(hasJavaFX("Oracle", "11"));
- assertFalse(hasJavaFX("Oracle", "11.0.1"));
- assertFalse(hasJavaFX("Oracle", "12"));
- }
}
diff --git a/javafx8-mapview/pom.xml b/javafx8-mapview/pom.xml
index 6ba1aa1f4b..0f76c2c088 100644
--- a/javafx8-mapview/pom.xml
+++ b/javafx8-mapview/pom.xml
@@ -27,11 +27,12 @@
${project.version}
- com.sun
- javafx
- jdk8
- stripped
- provided
+ org.openjfx
+ javafx-swing
+
+
+ org.openjfx
+ javafx-web
diff --git a/javafx8-mapview/src/main/java/slash/navigation/mapview/browser/JavaFX8WebViewMapView.java b/javafx8-mapview/src/main/java/slash/navigation/mapview/browser/JavaFX8WebViewMapView.java
index e2d8e6b612..658a26d2d5 100644
--- a/javafx8-mapview/src/main/java/slash/navigation/mapview/browser/JavaFX8WebViewMapView.java
+++ b/javafx8-mapview/src/main/java/slash/navigation/mapview/browser/JavaFX8WebViewMapView.java
@@ -37,8 +37,6 @@
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Logger;
diff --git a/mapsforge-mbtiles/pom.xml b/mapsforge-mbtiles/pom.xml
index 580403257e..d137b650bd 100644
--- a/mapsforge-mbtiles/pom.xml
+++ b/mapsforge-mbtiles/pom.xml
@@ -32,7 +32,7 @@
org.xerial
sqlite-jdbc
- 3.41.2.2
+ 3.42.0.0
diff --git a/navigation-formats/pom.xml b/navigation-formats/pom.xml
index e55ae6af57..b38101dc92 100644
--- a/navigation-formats/pom.xml
+++ b/navigation-formats/pom.xml
@@ -132,7 +132,7 @@
org.apache.poi
poi-ooxml-schemas
- ${poi.version}
+ 4.1.2
stripped
@@ -144,7 +144,7 @@
org.apache.xmlbeans
xmlbeans
- 3.1.0
+ 5.1.1
stripped
diff --git a/navigation-formats/src/main/java/slash/navigation/base/BaseUrlParsingFormat.java b/navigation-formats/src/main/java/slash/navigation/base/BaseUrlParsingFormat.java
index 5093d5f3af..0350d9af87 100644
--- a/navigation-formats/src/main/java/slash/navigation/base/BaseUrlParsingFormat.java
+++ b/navigation-formats/src/main/java/slash/navigation/base/BaseUrlParsingFormat.java
@@ -30,7 +30,7 @@
import java.util.Map;
import static java.net.URLEncoder.encode;
-import static slash.common.io.Transfer.UTF8_ENCODING;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static slash.navigation.base.RouteCharacteristics.Route;
/**
@@ -143,22 +143,14 @@ private Map> parseParameters(byte[] data, String encoding)
protected String decodeDescription(String description) {
if (description == null)
return "";
- try {
- return URLDecoder.decode(description, UTF8_ENCODING);
- } catch (UnsupportedEncodingException e) {
- return description;
- }
+ return URLDecoder.decode(description, UTF_8);
}
protected String encodeDescription(String description) {
if (description == null)
return "";
- try {
- description = encode(description, UTF8_ENCODING);
- description = description.replace("%2C", ",");
- return description;
- } catch (UnsupportedEncodingException e) {
- return description;
- }
+ description = encode(description, UTF_8);
+ description = description.replace("%2C", ",");
+ return description;
}
}
diff --git a/pom.xml b/pom.xml
index 6df1bce3d0..adf80a10b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,7 +63,8 @@
true
- 1.8
+ 17
+ 20.0.1
[3.5.4,)
0.1.1
@@ -75,7 +76,7 @@
2.3.1
2.3.1
0.19.0
- 4.1.2
+ 5.2.3
2.0.7
@@ -400,6 +401,7 @@
none
false
+ -Xdoclint:none
@@ -532,6 +534,16 @@
1.2
stripped
+
+ org.openjfx
+ javafx-swing
+ ${javafx.version}
+
+
+ org.openjfx
+ javafx-web
+ ${javafx.version}
+
javax.help
javahelp
diff --git a/route-catalog/src/main/java/slash/navigation/routes/local/LocalCategory.java b/route-catalog/src/main/java/slash/navigation/routes/local/LocalCategory.java
index c4e6e7a1bb..80a897fb1e 100644
--- a/route-catalog/src/main/java/slash/navigation/routes/local/LocalCategory.java
+++ b/route-catalog/src/main/java/slash/navigation/routes/local/LocalCategory.java
@@ -31,12 +31,14 @@
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import static java.io.File.separator;
import static java.lang.String.format;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static org.apache.commons.io.IOUtils.copyLarge;
import static slash.common.io.Files.recursiveDelete;
import static slash.common.io.Files.removeExtension;
@@ -149,7 +151,7 @@ public Route createRoute(String description, File localFile) throws IOException
public Route createRoute(String description, String url) throws IOException {
File destination = new File(directory, encodeFileName(description));
- try (PrintWriter writer = new PrintWriter(destination, UTF8_ENCODING)) {
+ try (PrintWriter writer = new PrintWriter(destination, UTF_8)) {
writer.println("[InternetShortcut]");
writer.println("URL=" + url);
}
diff --git a/route-converter-google/src/main/java/slash/navigation/converter/gui/RouteConverterGoogle.java b/route-converter-google/src/main/java/slash/navigation/converter/gui/RouteConverterGoogle.java
index f3cea15ed4..a01fb89fc6 100644
--- a/route-converter-google/src/main/java/slash/navigation/converter/gui/RouteConverterGoogle.java
+++ b/route-converter-google/src/main/java/slash/navigation/converter/gui/RouteConverterGoogle.java
@@ -35,8 +35,7 @@
import static java.util.Arrays.asList;
import static javax.swing.JOptionPane.*;
import static slash.common.io.Transfer.trim;
-import static slash.common.system.Platform.hasJavaFX;
-import static slash.common.system.Platform.isWindows;
+import static slash.common.system.Platform.*;
import static slash.navigation.converter.gui.helpers.ExternalPrograms.startBrowserForGoogleAPIKey;
/**
@@ -61,16 +60,31 @@ public String getEditionId() {
protected void checkJavaPrequisites() {
super.checkJavaPrequisites();
- String currentVersion = System.getProperty("java.version");
- if (!hasJavaFX()) {
- showMessageDialog(null, "Java " + currentVersion + " does not support JavaFX. Please install a Java 8 from Oracle. Avoid OpenJDK.", "RouteConverter", ERROR_MESSAGE);
- System.exit(8);
+ try {
+ Class.forName("javafx.embed.swing.JFXPanel");
+ }
+ catch (Exception e) {
+ showMessageDialog(null, "JavaFX Swing not found. Please install JavaFX 20 or later.", "RouteConverter", ERROR_MESSAGE);
+ System.exit(9);
+ }
+
+ try {
+ Class.forName("javafx.scene.web.WebView");
+ }
+ catch (Exception e) {
+ showMessageDialog(null, "JavaFX WebView not found. Please install JavaFX 20 or later.", "RouteConverter", ERROR_MESSAGE);
+ System.exit(10);
}
- if (isWindows() && (currentVersion.equals("1.8.0_161") || currentVersion.equals("1.8.0_162") || currentVersion.equals("1.8.0_171") || currentVersion.equals("1.8.0_172"))) {
- showMessageDialog(null, "Java " + currentVersion + " contains a fatal bug in JavaFX on Windows. Please install Java 8 Update 181 or later.", "RouteConverter", ERROR_MESSAGE);
+ String currentVersion = System.getProperty("javafx.runtime.version");
+ if (currentVersion == null) {
+ showMessageDialog(null, "JavaFX not found. Please install JavaFX 20 or later.", "RouteConverter", ERROR_MESSAGE);
System.exit(9);
}
+ if (!isCurrentAtLeastMinimumVersion(currentVersion, "20")) {
+ showMessageDialog(null, "JavaFX " + currentVersion + " is too old. Please install JavaFX 20 or later.", "RouteConverter", ERROR_MESSAGE);
+ System.exit(10);
+ }
}
protected void checkForGoogleMapsAPIKey() {
diff --git a/route-converter/src/main/java/slash/navigation/converter/gui/RouteConverter.java b/route-converter/src/main/java/slash/navigation/converter/gui/RouteConverter.java
index d9f38f58f3..ccec392a80 100644
--- a/route-converter/src/main/java/slash/navigation/converter/gui/RouteConverter.java
+++ b/route-converter/src/main/java/slash/navigation/converter/gui/RouteConverter.java
@@ -220,25 +220,10 @@ protected void startup() {
protected void checkJavaPrequisites() {
String currentVersion = System.getProperty("java.version");
- if (!isCurrentAtLeastMinimumVersion(currentVersion, "1.7.0_40")) {
- showMessageDialog(null, "Java " + currentVersion + " does not support JavaFX. Please install Java 8 or 10.", "RouteConverter", ERROR_MESSAGE);
- System.exit(7);
- }
-
- if (!isCurrentAtLeastMinimumVersion(currentVersion, "1.8.0")) {
- showMessageDialog(null, "Java " + currentVersion + " is too old for FIT and EclipseLink. Please install Java 8 or 11.", "RouteConverter", ERROR_MESSAGE);
+ if (!isCurrentAtLeastMinimumVersion(currentVersion, "17")) {
+ showMessageDialog(null, "Java " + currentVersion + " is too old for JavaFX 20. Please install Java 17 or later.", "RouteConverter", ERROR_MESSAGE);
System.exit(8);
}
-
- if (isWindows() && (currentVersion.equals("1.8.0_161") || currentVersion.equals("1.8.0_162") || currentVersion.equals("1.8.0_171") || currentVersion.equals("1.8.0_172"))) {
- showMessageDialog(null, "Java " + currentVersion + " contains a fatal bug in JavaFX on Windows. Please install Java 8 Update 181 or Java 11.", "RouteConverter", ERROR_MESSAGE);
- System.exit(9);
- }
-
- if (isJava15OrLater()) {
- showMessageDialog(null, "Java " + currentVersion + " contains breaking changes. Please install Java 8 or 11.", "RouteConverter", ERROR_MESSAGE);
- System.exit(10);
- }
}
protected abstract void checkForGoogleMapsAPIKey();
@@ -1123,7 +1108,7 @@ private void dividerChanged(int newValue) {
this.location = newValue;
getMapView().resize();
preferences.putInt(MAP_DIVIDER_LOCATION_PREFERENCE, newValue);
- double newRatio = new Integer(newValue).doubleValue() / contentPane.getWidth();
+ double newRatio = Integer.valueOf(newValue).doubleValue() / contentPane.getWidth();
preferences.putDouble(MAP_DIVIDER_RATIO_PREFERENCE, newRatio);
log.fine("Changed map divider to " + newValue + " and ratio " + newRatio);
enableActions();
diff --git a/route-converter/src/main/java/slash/navigation/converter/gui/helpers/ApplicationMenu.java b/route-converter/src/main/java/slash/navigation/converter/gui/helpers/ApplicationMenu.java
index c27307a036..c487870069 100644
--- a/route-converter/src/main/java/slash/navigation/converter/gui/helpers/ApplicationMenu.java
+++ b/route-converter/src/main/java/slash/navigation/converter/gui/helpers/ApplicationMenu.java
@@ -31,7 +31,6 @@
import java.util.logging.Logger;
import static slash.common.helpers.ExceptionHelper.getLocalizedMessage;
-import static slash.common.system.Platform.isJava9OrLater;
import static slash.navigation.gui.OSXHelper.OSXHandler.*;
/**
@@ -78,7 +77,7 @@ public void about(EventObject event) {
@SuppressWarnings("unchecked")
private List extractFiles(EventObject eventObject) throws Exception {
- Class> eventClass = Class.forName((isJava9OrLater() ? "java.awt.desktop." : "com.apple.eawt.AppEvent.") + "OpenFilesEvent");
+ Class> eventClass = Class.forName("java.awt.desktop." + "OpenFilesEvent");
Method getFilesMethod = eventClass.getMethod("getFiles");
Object result = getFilesMethod.invoke(eventObject);
return (List)result;
diff --git a/route-converter/src/test/java/slash/navigation/converter/gui/helpers/PositionHelperTest.java b/route-converter/src/test/java/slash/navigation/converter/gui/helpers/PositionHelperTest.java
index 4788864c47..0cf310e4fe 100644
--- a/route-converter/src/test/java/slash/navigation/converter/gui/helpers/PositionHelperTest.java
+++ b/route-converter/src/test/java/slash/navigation/converter/gui/helpers/PositionHelperTest.java
@@ -32,14 +32,12 @@
import static java.util.Locale.GERMAN;
import static org.junit.Assert.assertEquals;
import static slash.common.TestCase.calendar;
-import static slash.common.system.Platform.isJava9OrLater;
import static slash.common.type.CompactCalendar.fromDate;
public class PositionHelperTest {
private String asDefaultLocaleTime(String germanString) throws ParseException {
- if(isJava9OrLater())
- germanString = germanString.replace(" ", ", ");
+ germanString = germanString.replace(" ", ", ");
DateFormat germanFormat = getDateTimeInstance(SHORT, MEDIUM, GERMAN);
Date date = germanFormat.parse(germanString);
DateFormat defaultFormat = getDateTimeInstance(SHORT, MEDIUM);