1313import javax .imageio .ImageIO ;
1414import javax .swing .ImageIcon ;
1515import javax .swing .InputMap ;
16+ import javax .swing .JOptionPane ;
1617import javax .swing .KeyStroke ;
1718import javax .swing .SwingUtilities ;
1819import javax .swing .ToolTipManager ;
@@ -253,6 +254,13 @@ public static void initUIManager() {
253254 * String[]
254255 */
255256 public static void main (String [] args ) {
257+ var missingPrerequisite = ClientPrerequisites .getMissing ();
258+ if (missingPrerequisite != null ) {
259+ showUnsupportedJreDialog (missingPrerequisite );
260+ System .exit (1 );
261+ return ;
262+ }
263+
256264 CommandLineOptions opts = new CommandLineOptions (args );
257265
258266 if (StringUtils .isNotBlank (opts .getProtocols ())) {
@@ -267,6 +275,18 @@ public static void main(String[] args) {
267275 start (opts .getServer (), opts .getVersion (), opts .getUsername (), opts .getPassword ());
268276 }
269277
278+ private static void showUnsupportedJreDialog (String missingPrerequisite ) {
279+ var message = String .format (
280+ "%s Client requires %s%nPlease relaunch the client with a supported JRE." ,
281+ BrandingConstants .PRODUCT_NAME , missingPrerequisite );
282+
283+ try {
284+ JOptionPane .showMessageDialog (null , message , "Unsupported Java Runtime" , JOptionPane .ERROR_MESSAGE );
285+ } catch (Throwable t ) {
286+ System .err .println (message );
287+ }
288+ }
289+
270290 private static void start (final String server , final String version , final String username , final String password ) {
271291 // disable the velocity logging
272292 Logger velocityLogger = LogManager .getLogger (RuntimeConstants .DEFAULT_RUNTIME_LOG_NAME );
0 commit comments