77import java .awt .Toolkit ;
88import java .awt .event .InputEvent ;
99import java .awt .event .KeyEvent ;
10+ import java .awt .Desktop ;
1011import java .io .IOException ;
1112import java .util .prefs .Preferences ;
1213
1314import javax .imageio .ImageIO ;
1415import javax .swing .ImageIcon ;
1516import javax .swing .InputMap ;
17+ import javax .swing .JOptionPane ;
1618import javax .swing .KeyStroke ;
1719import javax .swing .SwingUtilities ;
1820import javax .swing .ToolTipManager ;
@@ -253,6 +255,13 @@ public static void initUIManager() {
253255 * String[]
254256 */
255257 public static void main (String [] args ) {
258+ var missingPrerequisite = ClientPrerequisites .getMissing ();
259+ if (missingPrerequisite != null ) {
260+ showUnsupportedJreDialog (missingPrerequisite );
261+ System .exit (1 );
262+ return ;
263+ }
264+
256265 CommandLineOptions opts = new CommandLineOptions (args );
257266
258267 if (StringUtils .isNotBlank (opts .getProtocols ())) {
@@ -267,6 +276,23 @@ public static void main(String[] args) {
267276 start (opts .getServer (), opts .getVersion (), opts .getUsername (), opts .getPassword ());
268277 }
269278
279+ private static void showUnsupportedJreDialog (String missingPrerequisite ) {
280+ try {
281+ var message = String .format (
282+ "%s Client requires %s%nPlease review the system requirements and try again." ,
283+ BrandingConstants .PRODUCT_NAME , missingPrerequisite );
284+ var options = new Object [] { "View System Requirements" , "Exit" };
285+ var result = JOptionPane .showOptionDialog (
286+ null , message , "Unsupported Java Runtime" , JOptionPane .DEFAULT_OPTION , JOptionPane .ERROR_MESSAGE , null , options , options [0 ]);
287+
288+ if (result == 0 ) {
289+ Desktop .getDesktop ().browse (java .net .URI .create (BrandingConstants .SYSTEM_REQUIREMENTS_URL ));
290+ }
291+ } catch (Throwable t ) {
292+ System .err .println (String .format ("Missing prerequisite: %s" , missingPrerequisite ));
293+ }
294+ }
295+
270296 private static void start (final String server , final String version , final String username , final String password ) {
271297 // disable the velocity logging
272298 Logger velocityLogger = LogManager .getLogger (RuntimeConstants .DEFAULT_RUNTIME_LOG_NAME );
0 commit comments