diff --git a/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/ProductCatalogGenerator.java b/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/ProductCatalogGenerator.java
index 3ae7b01..ae3298d 100644
--- a/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/ProductCatalogGenerator.java
+++ b/plugins/org.eclipse.oomph.setup.installer/src/org/eclipse/oomph/setup/internal/installer/ProductCatalogGenerator.java
@@ -179,6 +179,8 @@
 
   private static final String JUSTJ_JRES = "https://download.eclipse.org/justj/jres";
 
+  private static final Set<Integer> EXCLUDED_NON_LTS_JUSTJ_VERSIONS = Set.of(12, 13, 14, 15, 16);
+
   private URI outputLocation;
 
   private String stagingTrain;
@@ -2208,10 +2210,14 @@
       if (version instanceof OSGiVersion)
       {
         OSGiVersion osgiVersion = (OSGiVersion)version;
-        Version jreVersion = Version.createOSGi(osgiVersion.getMajor(), osgiVersion.getMinor(), 0);
-        if (!jreVersions.containsKey(jreVersion))
+        int major = osgiVersion.getMajor();
+        if (!EXCLUDED_NON_LTS_JUSTJ_VERSIONS.contains(major))
         {
-          jreVersions.put(jreVersion, iu);
+          Version jreVersion = Version.createOSGi(major, osgiVersion.getMinor(), 0);
+          if (!jreVersions.containsKey(jreVersion))
+          {
+            jreVersions.put(jreVersion, iu);
+          }
         }
       }
     }
@@ -2285,24 +2291,40 @@
       String description = iu.getProperty(IInstallableUnit.PROP_DESCRIPTION, null);
       p2Task.setDescription(description);
 
-      if (osgiVersion.getMajor() >= 17)
+      if (osgiVersion.getMajor() >= 18)
       {
-        Annotation jreSpecifTasks = BaseFactory.eINSTANCE.createAnnotation(AnnotationConstants.ANNOTATION_JRE_SPECIFIC_TASKS);
+        Annotation jreSpecificTasks = BaseFactory.eINSTANCE.createAnnotation(AnnotationConstants.ANNOTATION_JRE_SPECIFIC_TASKS);
         EclipseIniTask addOpensJavaLangTask = SetupFactory.eINSTANCE.createEclipseIniTask();
         addOpensJavaLangTask.setOption("--add-opens=java.base/java.lang=ALL-UNNAMED");
         addOpensJavaLangTask.setVm(true);
-        jreSpecifTasks.getContents().add(addOpensJavaLangTask);
-        p2Task.getAnnotations().add(jreSpecifTasks);
+        jreSpecificTasks.getContents().add(addOpensJavaLangTask);
+
+        EclipseIniTask allowSecurityManagerTask = SetupFactory.eINSTANCE.createEclipseIniTask();
+        allowSecurityManagerTask.setOption("-Djava.security.manager");
+        allowSecurityManagerTask.setValue("=allow");
+        allowSecurityManagerTask.setVm(true);
+        jreSpecificTasks.getContents().add(allowSecurityManagerTask);
+
+        p2Task.getAnnotations().add(jreSpecificTasks);
+      }
+      else if (osgiVersion.getMajor() >= 17)
+      {
+        Annotation jreSpecificTasks = BaseFactory.eINSTANCE.createAnnotation(AnnotationConstants.ANNOTATION_JRE_SPECIFIC_TASKS);
+        EclipseIniTask addOpensJavaLangTask = SetupFactory.eINSTANCE.createEclipseIniTask();
+        addOpensJavaLangTask.setOption("--add-opens=java.base/java.lang=ALL-UNNAMED");
+        addOpensJavaLangTask.setVm(true);
+        jreSpecificTasks.getContents().add(addOpensJavaLangTask);
+        p2Task.getAnnotations().add(jreSpecificTasks);
       }
       else if (osgiVersion.getMajor() >= 16)
       {
-        Annotation jreSpecifTasks = BaseFactory.eINSTANCE.createAnnotation(AnnotationConstants.ANNOTATION_JRE_SPECIFIC_TASKS);
+        Annotation jreSpecificTasks = BaseFactory.eINSTANCE.createAnnotation(AnnotationConstants.ANNOTATION_JRE_SPECIFIC_TASKS);
         EclipseIniTask illegalAccessTask = SetupFactory.eINSTANCE.createEclipseIniTask();
         illegalAccessTask.setOption("--illegal-access");
         illegalAccessTask.setValue("=permit");
         illegalAccessTask.setVm(true);
-        jreSpecifTasks.getContents().add(illegalAccessTask);
-        p2Task.getAnnotations().add(jreSpecifTasks);
+        jreSpecificTasks.getContents().add(illegalAccessTask);
+        p2Task.getAnnotations().add(jreSpecificTasks);
       }
 
       jreMacro.getSetupTasks().add(p2Task);
diff --git a/setups/org.eclipse.jres.setup b/setups/org.eclipse.jres.setup
index e856722..e365ed5 100644
--- a/setups/org.eclipse.jres.setup
+++ b/setups/org.eclipse.jres.setup
@@ -9,12 +9,12 @@
     label="JRE">
   <setupTask
       xsi:type="setup.p2:P2Task"
-      label="JRE 11.0.14.1">
+      label="JRE 11.0.15">
     <requirement
         name="org.eclipse.justj.openjdk.hotspot.jre.full.feature.group"
-        filter="(|(&amp;(osgi.arch=aarch64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=win32)))"/>
+        filter="(|(&amp;(osgi.arch=aarch64)(osgi.os=linux))(&amp;(osgi.arch=aarch64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=win32)))"/>
     <repository
-        url="https://download.eclipse.org/justj/jres/11/updates/release/latest"/>
+        url="https://download.eclipse.org/justj/jres/11/updates/release/11.0.15"/>
     <description>
       Contains the plug-ins and fragments for the Adoptium OpenJDK Hotspot JRE Complete.
       Provides the complete set of modules of the JDK, excluding incubators.
@@ -22,54 +22,7 @@
   </setupTask>
   <setupTask
       xsi:type="setup.p2:P2Task"
-      label="JRE 14.0.2">
-    <requirement
-        name="org.eclipse.justj.openjdk.hotspot.jre.full.feature.group"
-        filter="(|(&amp;(osgi.arch=x86_64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=win32)))"/>
-    <repository
-        url="https://download.eclipse.org/justj/jres/14/updates/release/14.0.2"/>
-    <description>
-      Contains the plug-ins and fragments for the OpenJDK Hotspot JRE Complete.
-      Provides the complete set of modules of the JDK, excluding incubators.
-    </description>
-  </setupTask>
-  <setupTask
-      xsi:type="setup.p2:P2Task"
-      label="JRE 15.0.2">
-    <requirement
-        name="org.eclipse.justj.openjdk.hotspot.jre.full.feature.group"
-        filter="(|(&amp;(osgi.arch=aarch64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=win32)))"/>
-    <repository
-        url="https://download.eclipse.org/justj/jres/15/updates/release/15.0.2"/>
-    <description>
-      Contains the plug-ins and fragments for the OpenJDK Hotspot JRE Complete.
-      Provides the complete set of modules of the JDK, excluding incubators.
-    </description>
-  </setupTask>
-  <setupTask
-      xsi:type="setup.p2:P2Task"
-      label="JRE 16.0.2">
-    <annotation
-        source="http://www.eclipse.org/oomph/setup/JRESpecificTasks">
-      <content
-          xsi:type="setup:EclipseIniTask"
-          option="--illegal-access"
-          value="=permit"
-          vm="true"/>
-    </annotation>
-    <requirement
-        name="org.eclipse.justj.openjdk.hotspot.jre.full.feature.group"
-        filter="(|(&amp;(osgi.arch=aarch64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=win32)))"/>
-    <repository
-        url="https://download.eclipse.org/justj/jres/16/updates/release/16.0.2"/>
-    <description>
-      Contains the plug-ins and fragments for the OpenJDK Hotspot JRE Complete.
-      Provides the complete set of modules of the JDK, excluding incubators.
-    </description>
-  </setupTask>
-  <setupTask
-      xsi:type="setup.p2:P2Task"
-      label="JRE 17.0.2">
+      label="JRE 17.0.3">
     <annotation
         source="http://www.eclipse.org/oomph/setup/JRESpecificTasks">
       <content
@@ -81,7 +34,32 @@
         name="org.eclipse.justj.openjdk.hotspot.jre.full.feature.group"
         filter="(|(&amp;(osgi.arch=aarch64)(osgi.os=linux))(&amp;(osgi.arch=aarch64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=win32)))"/>
     <repository
-        url="https://download.eclipse.org/justj/jres/17/updates/release/17.0.2"/>
+        url="https://download.eclipse.org/justj/jres/17/updates/release/17.0.3"/>
+    <description>
+      Contains the plug-ins and fragments for the Adoptium OpenJDK Hotspot JRE Complete.
+      Provides the complete set of modules of the JDK, excluding incubators.
+    </description>
+  </setupTask>
+  <setupTask
+      xsi:type="setup.p2:P2Task"
+      label="JRE 18.0.1">
+    <annotation
+        source="http://www.eclipse.org/oomph/setup/JRESpecificTasks">
+      <content
+          xsi:type="setup:EclipseIniTask"
+          option="--add-opens=java.base/java.lang=ALL-UNNAMED"
+          vm="true"/>
+      <content
+          xsi:type="setup:EclipseIniTask"
+          option="-Djava.security.manager"
+          value="=allow"
+          vm="true"/>
+    </annotation>
+    <requirement
+        name="org.eclipse.justj.openjdk.hotspot.jre.full.feature.group"
+        filter="(|(&amp;(osgi.arch=aarch64)(osgi.os=linux))(&amp;(osgi.arch=aarch64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=linux))(&amp;(osgi.arch=x86_64)(osgi.os=macosx))(&amp;(osgi.arch=x86_64)(osgi.os=win32)))"/>
+    <repository
+        url="https://download.eclipse.org/justj/jres/18/updates/release/18.0.1"/>
     <description>
       Contains the plug-ins and fragments for the Adoptium OpenJDK Hotspot JRE Complete.
       Provides the complete set of modules of the JDK, excluding incubators.
