diff --git a/sql12/core/doc/changes.txt b/sql12/core/doc/changes.txt index 5a54a936c..9b43f8372 100755 --- a/sql12/core/doc/changes.txt +++ b/sql12/core/doc/changes.txt @@ -6,6 +6,15 @@ Not yet released, available in our GIT repository, snapshots and future releases Enhancements: +https://github.com/squirrel-sql-client/squirrel-sql-code/issues/88 + Several more editor shortcuts are available to be configured in SQuirreL's global preferences. + See menu File --> Global Preferences --> tab "Keyboard shortcuts". + Note: These shortcuts only appear in the global preferences after a Session was opened. + +Upgraded to RSyntax libs to RText version 6.1.0. + +Introduced Java 26 compatibility. + https://github.com/squirrel-sql-client/squirrel-sql-code/issues/88 New SQL editor function that supports editing files in an external editor. The function allows to execute an configurable CLI command to start the external editors. diff --git a/sql12/core/lib/rsyntax_RText-6.0.2.jar b/sql12/core/lib/rsyntax_RText-6.1.0.jar similarity index 50% rename from sql12/core/lib/rsyntax_RText-6.0.2.jar rename to sql12/core/lib/rsyntax_RText-6.1.0.jar index 527d9f0a6..95f6c2cb5 100644 Binary files a/sql12/core/lib/rsyntax_RText-6.0.2.jar and b/sql12/core/lib/rsyntax_RText-6.1.0.jar differ diff --git a/sql12/core/lib/rsyntax_autocomplete-3.3.1.jar b/sql12/core/lib/rsyntax_autocomplete-3.3.1.jar deleted file mode 100644 index 3d6cc4565..000000000 Binary files a/sql12/core/lib/rsyntax_autocomplete-3.3.1.jar and /dev/null differ diff --git a/sql12/core/lib/rsyntax_autocomplete-3.3.3.jar b/sql12/core/lib/rsyntax_autocomplete-3.3.3.jar new file mode 100644 index 000000000..a442a8657 Binary files /dev/null and b/sql12/core/lib/rsyntax_autocomplete-3.3.3.jar differ diff --git a/sql12/core/lib/rsyntax_rstaui-3.3.1.jar b/sql12/core/lib/rsyntax_rstaui-3.3.1.jar deleted file mode 100644 index f34cfeebd..000000000 Binary files a/sql12/core/lib/rsyntax_rstaui-3.3.1.jar and /dev/null differ diff --git a/sql12/core/lib/rsyntax_rstaui-3.3.2.jar b/sql12/core/lib/rsyntax_rstaui-3.3.2.jar new file mode 100644 index 000000000..84e95e6e4 Binary files /dev/null and b/sql12/core/lib/rsyntax_rstaui-3.3.2.jar differ diff --git a/sql12/core/lib/rsyntax_rsyntaxtextarea-3.3.4.jar b/sql12/core/lib/rsyntax_rsyntaxtextarea-3.3.4.jar deleted file mode 100644 index fe7923e46..000000000 Binary files a/sql12/core/lib/rsyntax_rsyntaxtextarea-3.3.4.jar and /dev/null differ diff --git a/sql12/core/lib/rsyntax_rsyntaxtextarea-3.6.1.jar b/sql12/core/lib/rsyntax_rsyntaxtextarea-3.6.1.jar new file mode 100644 index 000000000..3b7db5ed6 Binary files /dev/null and b/sql12/core/lib/rsyntax_rsyntaxtextarea-3.6.1.jar differ diff --git a/sql12/core/src/net/sourceforge/squirrel_sql/client/session/action/syntax/rsyntax/I18NStrings.properties b/sql12/core/src/net/sourceforge/squirrel_sql/client/session/action/syntax/rsyntax/I18NStrings.properties index d7863686a..f89f5e309 100644 --- a/sql12/core/src/net/sourceforge/squirrel_sql/client/session/action/syntax/rsyntax/I18NStrings.properties +++ b/sql12/core/src/net/sourceforge/squirrel_sql/client/session/action/syntax/rsyntax/I18NStrings.properties @@ -1 +1,3 @@ -syntax.useNoDDrawOnWIn32=Please use the Java-VM parameter -Dsun.java2d.noddraw=true in your SQuirreL start batch to prevent performance problems \ No newline at end of file +syntax.useNoDDrawOnWIn32=Please use the Java-VM parameter -Dsun.java2d.noddraw=true in your SQuirreL start batch to prevent performance problems + +SquirreLRSyntaxTextAreaUI.editor.shortcut=Editor shortcut \ No newline at end of file diff --git a/sql12/core/src/net/sourceforge/squirrel_sql/client/session/action/syntax/rsyntax/SquirreLRSyntaxTextAreaUI.java b/sql12/core/src/net/sourceforge/squirrel_sql/client/session/action/syntax/rsyntax/SquirreLRSyntaxTextAreaUI.java index 5304b0fc1..4409223d6 100644 --- a/sql12/core/src/net/sourceforge/squirrel_sql/client/session/action/syntax/rsyntax/SquirreLRSyntaxTextAreaUI.java +++ b/sql12/core/src/net/sourceforge/squirrel_sql/client/session/action/syntax/rsyntax/SquirreLRSyntaxTextAreaUI.java @@ -3,6 +3,8 @@ import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; +import java.util.HashSet; +import java.util.List; import javax.swing.Action; import javax.swing.InputMap; import javax.swing.KeyStroke; @@ -23,6 +25,8 @@ import net.sourceforge.squirrel_sql.fw.gui.stdtextpopup.TextEndLineAction; import net.sourceforge.squirrel_sql.fw.gui.stdtextpopup.TextPasteAction; import net.sourceforge.squirrel_sql.fw.gui.stdtextpopup.TextSelectAllAction; +import net.sourceforge.squirrel_sql.fw.util.StringManager; +import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaDefaultInputMap; import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaEditorKit; import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaUI; @@ -39,6 +43,8 @@ public class SquirreLRSyntaxTextAreaUI extends RSyntaxTextAreaUI private static final KeyStroke RS_KEY_STROKE_SELECT_WORD = KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_DOWN_MASK); + private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(SquirreLRSyntaxTextAreaUI.class); + private static final EditorKit _squirrel_defaultKit = new RSyntaxTextAreaEditorKit() { @@ -147,6 +153,35 @@ private void modifyKeystrokes(InputMap sharedIM) sharedIM.put(TextBeginAction.getKeyStroke(), RTextAreaEditorKit.beginAction); sharedIM.remove(KeyStroke.getKeyStroke(KeyEvent.VK_END, InputEvent.CTRL_DOWN_MASK)); sharedIM.put(TextEndAction.getKeyStroke(), RTextAreaEditorKit.endAction); + + completeAccelerators(sharedIM); + } + + /** + * Note that + * {@link net.sourceforge.squirrel_sql.client.shortcut.ShortcutManager#registerAccelerator(String, KeyStroke, ShortCutDescriptionReader)} + * does not renew already existing registrations. + */ + private static void completeAccelerators(InputMap sharedIM) + { + for(KeyStroke keyStroke : sharedIM.allKeys()) + { + HashSet actionMapKeysToExclude = new HashSet<>(); + actionMapKeysToExclude.addAll( + List.of(RSyntaxTextAreaEditorKit.rstaCollapseAllFoldsAction, RSyntaxTextAreaEditorKit.rstaExpandAllFoldsAction, + RSyntaxTextAreaEditorKit.rstaExpandFoldAction, RSyntaxTextAreaEditorKit.rtaNextBookmarkAction, + RSyntaxTextAreaEditorKit.rtaPrevBookmarkAction, RSyntaxTextAreaEditorKit.rtaToggleBookmarkAction) + ); + + Object actionMapKey = sharedIM.get(keyStroke); + if(null != actionMapKey && false == actionMapKeysToExclude.contains(actionMapKey)) + { + KeyStroke keyStroke1 = KeyStroke.getKeyStroke(Main.getApplication().getShortcutManager().registerAccelerator("" + actionMapKey, + keyStroke, + ShortCutDescriptionReader.of(s_stringMgr.getString("SquirreLRSyntaxTextAreaUI.editor.shortcut")))); + sharedIM.put(keyStroke1, actionMapKey); + } + } } public IUndoHandler createUndoHandler() diff --git a/sql12/core/src/net/sourceforge/squirrel_sql/client/shortcut/ShortCutDescriptionReader.java b/sql12/core/src/net/sourceforge/squirrel_sql/client/shortcut/ShortCutDescriptionReader.java index 4bc765dbb..50d23c2c4 100644 --- a/sql12/core/src/net/sourceforge/squirrel_sql/client/shortcut/ShortCutDescriptionReader.java +++ b/sql12/core/src/net/sourceforge/squirrel_sql/client/shortcut/ShortCutDescriptionReader.java @@ -14,41 +14,47 @@ public record ShortCutDescriptionReader(Action action, JMenuItem mnuItem, Resources resources, ResourceBundleHandler bundleHandler, - String fullResourceKey) + String fullResourceKey, + String callerProvidedText) { public static ShortCutDescriptionReader of(Action action) { - return new ShortCutDescriptionReader(action, null, null, null, null, null); + return new ShortCutDescriptionReader(action, null, null, null, null, null, null); } public static ShortCutDescriptionReader of(Action action, JMenuItem mnuItem) { - return new ShortCutDescriptionReader(action, null, mnuItem, null, null, null); + return new ShortCutDescriptionReader(action, null, mnuItem, null, null, null, null); } public static ShortCutDescriptionReader of(JMenuItem menuItem) { - return new ShortCutDescriptionReader(null, null, menuItem, null, null, null); + return new ShortCutDescriptionReader(null, null, menuItem, null, null, null, null); } public static ShortCutDescriptionReader of(Resources resources, Class actionClass) { - return new ShortCutDescriptionReader(null, actionClass, null, resources, null, null); + return new ShortCutDescriptionReader(null, actionClass, null, resources, null, null, null); } public static ShortCutDescriptionReader of(Action action, String fullResourceKey, ResourceBundleHandler bundleHandler) { - return new ShortCutDescriptionReader(action, null, null, null, bundleHandler, fullResourceKey); + return new ShortCutDescriptionReader(action, null, null, null, bundleHandler, fullResourceKey, null); } public static ShortCutDescriptionReader of() { - return new ShortCutDescriptionReader(null, null, null, null, null, null); + return new ShortCutDescriptionReader(null, null, null, null, null, null, null); + } + + public static ShortCutDescriptionReader of(String callerProvidedText) + { + return new ShortCutDescriptionReader(null, null, null, null, null, null, callerProvidedText); } public String getDescription() { - String description = null; + String description = callerProvidedText; Class actCls = actionClass; @@ -58,7 +64,7 @@ public String getDescription() } - if(null != resources && null != actCls) + if(StringUtils.isBlank(description) && null != resources && null != actCls) { description = resources.getTooltipFromResource(actCls); } diff --git a/sql12/core/src/net/sourceforge/squirrel_sql/client/shortcut/ShortcutManager.java b/sql12/core/src/net/sourceforge/squirrel_sql/client/shortcut/ShortcutManager.java index 6eee09d98..081565b3f 100644 --- a/sql12/core/src/net/sourceforge/squirrel_sql/client/shortcut/ShortcutManager.java +++ b/sql12/core/src/net/sourceforge/squirrel_sql/client/shortcut/ShortcutManager.java @@ -118,6 +118,8 @@ else if (_shortcutsJsonBeanLoadedAtStartUp.getShortcutByKey().containsKey(ret.ge ret.setUserKeyStrokeEmpty(); } + // This means existing registrations remain unchanged. + // This behavior could be important to net.sourceforge.squirrel_sql.client.session.action.syntax.rsyntax.SquirreLRSyntaxTextAreaUI.completeAccelerators(...) if (false == _shortcuts.contains(ret)) { _shortcuts.add(ret); diff --git a/sql12/core/src/net/sourceforge/squirrel_sql/fw/gui/DataSetViewerTableCopyAction.java b/sql12/core/src/net/sourceforge/squirrel_sql/fw/gui/DataSetViewerTableCopyAction.java index 16de91b7f..acf67e7f7 100644 --- a/sql12/core/src/net/sourceforge/squirrel_sql/fw/gui/DataSetViewerTableCopyAction.java +++ b/sql12/core/src/net/sourceforge/squirrel_sql/fw/gui/DataSetViewerTableCopyAction.java @@ -1,16 +1,16 @@ package net.sourceforge.squirrel_sql.fw.gui; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; +import javax.swing.Action; +import javax.swing.KeyStroke; import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerTable; import net.sourceforge.squirrel_sql.fw.gui.action.BaseAction; import net.sourceforge.squirrel_sql.fw.gui.action.TableCopyCommand; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; -import javax.swing.KeyStroke; -import java.awt.Toolkit; -import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; - public class DataSetViewerTableCopyAction extends BaseAction { private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(DataSetViewerTableCopyAction.class); @@ -21,6 +21,8 @@ public class DataSetViewerTableCopyAction extends BaseAction DataSetViewerTableCopyAction(DataSetViewerTable dataSetViewerTable) { super(getTableCopyActionName()); + super.putValue(Action.SHORT_DESCRIPTION, s_stringMgr.getString("TablePopupMenu.copy.short.description")); + super.putValue(Action.LONG_DESCRIPTION, s_stringMgr.getString("TablePopupMenu.copy.long.description")); _dataSetViewerTable = dataSetViewerTable; } diff --git a/sql12/core/src/net/sourceforge/squirrel_sql/fw/gui/I18NStrings.properties b/sql12/core/src/net/sourceforge/squirrel_sql/fw/gui/I18NStrings.properties index 5e7bbaa6f..81f10d55c 100644 --- a/sql12/core/src/net/sourceforge/squirrel_sql/fw/gui/I18NStrings.properties +++ b/sql12/core/src/net/sourceforge/squirrel_sql/fw/gui/I18NStrings.properties @@ -34,6 +34,9 @@ SQLCatalogsComboBox.noneLabel=None TablePopupMenu.clear=Clear TablePopupMenu.copy=Copy +TablePopupMenu.copy.short.description=Copy from table +TablePopupMenu.copy.long.description=Copy from table to clipboard + TablePopupMenu.copyWithHeaders=Copy with headers TablePopupMenu.copyashtml=Copy as HTML TablePopupMenu.copyaligned=Copy aligned (as in 'Results as text' tab) diff --git a/sql12/launcher/mac/squirrel-sql.sh b/sql12/launcher/mac/squirrel-sql.sh index e7a8d6691..08e9921b1 100755 --- a/sql12/launcher/mac/squirrel-sql.sh +++ b/sql12/launcher/mac/squirrel-sql.sh @@ -82,7 +82,7 @@ cd "$UNIX_STYLE_HOME" # should be able to be run by that version or higher. The arguments to JavaVersionChecker below specify the # minimum acceptable version (first arg) and any other acceptable subsequent versions. . should # be all that is necessary for the version form. -"$JAVACMD" -cp "$UNIX_STYLE_HOME/../Resources/Java/lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +"$JAVACMD" -cp "$UNIX_STYLE_HOME/../Resources/Java/lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if [ "$?" != "0" ]; then exit fi diff --git a/sql12/launcher/squirrel-sql.bat b/sql12/launcher/squirrel-sql.bat index d6ab0f5e0..7a48daa59 100755 --- a/sql12/launcher/squirrel-sql.bat +++ b/sql12/launcher/squirrel-sql.bat @@ -30,7 +30,7 @@ set basedir=%basedir:~0,-1% if NOT "%removed%"=="\" goto strip set SQUIRREL_SQL_HOME=%basedir% -"%LOCAL_JAVA%" -cp "%SQUIRREL_SQL_HOME%\lib\versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +"%LOCAL_JAVA%" -cp "%SQUIRREL_SQL_HOME%\lib\versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if ErrorLevel 1 goto ExitForWrongJavaVersion :launchsquirrel diff --git a/sql12/launcher/squirrel-sql.sh b/sql12/launcher/squirrel-sql.sh index 2fc8510f0..45d42ce0a 100755 --- a/sql12/launcher/squirrel-sql.sh +++ b/sql12/launcher/squirrel-sql.sh @@ -46,7 +46,7 @@ cd "$UNIX_STYLE_HOME" # should be able to be run by that version or higher. The arguments to JavaVersionChecker below specify the # minimum acceptable version (first arg) and any other acceptable subsequent versions. . should # be all that is necessary for the version form. -$JAVACMD -cp "$UNIX_STYLE_HOME/lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +$JAVACMD -cp "$UNIX_STYLE_HOME/lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if [ "$?" != "0" ]; then exit fi diff --git a/sql12/launcher/squirrelcli/squirrelcli.bat b/sql12/launcher/squirrelcli/squirrelcli.bat index 0dafd6275..e76fc1f37 100644 --- a/sql12/launcher/squirrelcli/squirrelcli.bat +++ b/sql12/launcher/squirrelcli/squirrelcli.bat @@ -34,7 +34,7 @@ set SQUIRREL_CLI_HOME=%basedir% @rem that version of higher. The arguments to JavaVersionChecker below specify the minimum acceptable version @rem (first arg) and any other acceptable subsequent versions. . should be all that is @rem necessary for the version form. -"%LOCAL_JAVA%" -cp "%SQUIRREL_CLI_HOME%\..\lib\versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +"%LOCAL_JAVA%" -cp "%SQUIRREL_CLI_HOME%\..\lib\versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if ErrorLevel 1 goto ExitForWrongJavaVersion :launchsquirrel diff --git a/sql12/launcher/squirrelcli/squirrelcli.sh b/sql12/launcher/squirrelcli/squirrelcli.sh index 84694f004..1029ec32d 100755 --- a/sql12/launcher/squirrelcli/squirrelcli.sh +++ b/sql12/launcher/squirrelcli/squirrelcli.sh @@ -48,7 +48,7 @@ cd "$UNIX_STYLE_HOME" # should be able to be run by that version or higher. The arguments to JavaVersionChecker below specify the # minimum acceptable version (first arg) and any other acceptable subsequent versions. . should # be all that is necessary for the version form. -$JAVA_HOME/bin/java -cp "$UNIX_STYLE_HOME/../lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +$JAVA_HOME/bin/java -cp "$UNIX_STYLE_HOME/../lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if [ "$?" != "0" ]; then exit fi diff --git a/sql12/plainZipScripts/squirrel-sql-mac.sh b/sql12/plainZipScripts/squirrel-sql-mac.sh index d0e89e942..9a58daa43 100755 --- a/sql12/plainZipScripts/squirrel-sql-mac.sh +++ b/sql12/plainZipScripts/squirrel-sql-mac.sh @@ -87,7 +87,7 @@ cd "$UNIX_STYLE_HOME" # should be able to be run by that version or higher. The arguments to JavaVersionChecker below specify the # minimum acceptable version (first arg) and any other acceptable subsequent versions. . should # be all that is necessary for the version form. -"$JAVACMD" -cp "$UNIX_STYLE_HOME/../Resources/Java/lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +"$JAVACMD" -cp "$UNIX_STYLE_HOME/../Resources/Java/lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if [ "$?" != "0" ]; then exit fi diff --git a/sql12/plainZipScripts/squirrel-sql.bat b/sql12/plainZipScripts/squirrel-sql.bat index b46b5c2e4..6861e5466 100644 --- a/sql12/plainZipScripts/squirrel-sql.bat +++ b/sql12/plainZipScripts/squirrel-sql.bat @@ -23,7 +23,7 @@ set basedir=%basedir:~0,-1% if NOT "%removed%"=="\" goto strip set SQUIRREL_SQL_HOME=%basedir% -"%LOCAL_JAVA%" -cp "%SQUIRREL_SQL_HOME%\lib\versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +"%LOCAL_JAVA%" -cp "%SQUIRREL_SQL_HOME%\lib\versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if ErrorLevel 1 goto ExitForWrongJavaVersion :launchsquirrel diff --git a/sql12/plainZipScripts/squirrel-sql.sh b/sql12/plainZipScripts/squirrel-sql.sh index ebef6b0a0..8382101b4 100755 --- a/sql12/plainZipScripts/squirrel-sql.sh +++ b/sql12/plainZipScripts/squirrel-sql.sh @@ -45,7 +45,7 @@ cd "$UNIX_STYLE_HOME" # should be able to be run by that version or higher. The arguments to JavaVersionChecker below specify the # minimum acceptable version (first arg) and any other acceptable subsequent versions. . should # be all that is necessary for the version form. -$JAVACMD -cp "$UNIX_STYLE_HOME/lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +$JAVACMD -cp "$UNIX_STYLE_HOME/lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if [ "$?" != "0" ]; then exit fi diff --git a/sql12/plainZipScripts/squirrelcli/squirrelcli.bat b/sql12/plainZipScripts/squirrelcli/squirrelcli.bat index 1496bba67..9f815c625 100644 --- a/sql12/plainZipScripts/squirrelcli/squirrelcli.bat +++ b/sql12/plainZipScripts/squirrelcli/squirrelcli.bat @@ -28,7 +28,7 @@ set SQUIRREL_CLI_HOME=%basedir% @rem that version of higher. The arguments to JavaVersionChecker below specify the minimum acceptable version @rem (first arg) and any other acceptable subsequent versions. . should be all that is @rem necessary for the version form. -"%LOCAL_JAVA%" -cp "%SQUIRREL_CLI_HOME%\..\lib\versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +"%LOCAL_JAVA%" -cp "%SQUIRREL_CLI_HOME%\..\lib\versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if ErrorLevel 1 goto ExitForWrongJavaVersion :launchsquirrel diff --git a/sql12/plainZipScripts/squirrelcli/squirrelcli.sh b/sql12/plainZipScripts/squirrelcli/squirrelcli.sh index caedbe261..bc57870de 100755 --- a/sql12/plainZipScripts/squirrelcli/squirrelcli.sh +++ b/sql12/plainZipScripts/squirrelcli/squirrelcli.sh @@ -47,7 +47,7 @@ cd "$UNIX_STYLE_HOME" # should be able to be run by that version or higher. The arguments to JavaVersionChecker below specify the # minimum acceptable version (first arg) and any other acceptable subsequent versions. . should # be all that is necessary for the version form. -$JAVA_HOME/bin/java -cp "$UNIX_STYLE_HOME/../lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 +$JAVA_HOME/bin/java -cp "$UNIX_STYLE_HOME/../lib/versioncheck.jar" JavaVersionChecker 17 18 19 20 21 22 23 24 25 26 if [ "$?" != "0" ]; then exit fi