From 8466335ecf8a4d3f5b63a9da2572f1ec81981440 Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Thu, 26 Sep 2013 15:47:12 +0000
Subject: [PATCH] Fix for OPENDJ-1142, OpenDJ setup does not work in Java8 EA - A security class cannot be found in this JVM. CertAndKeyGen class was moved from sun.security.x509 to sun.security.tools.keytool in openjdk8. Now checking JVM version to figure out the path. CR-2376.

---
 opendj-sdk/opends/src/server/org/opends/server/util/Platform.java |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/util/Platform.java b/opendj-sdk/opends/src/server/org/opends/server/util/Platform.java
index fdec803..f2557e4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/util/Platform.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/util/Platform.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2009-2010 Sun Microsystems, Inc.
+ *      Portions Copyright 2013 ForgeRock AS.
  */
 
 package org.opends.server.util;
@@ -57,7 +58,7 @@
 {
 
   // Prefix that determines which security package to use.
-  private static String pkgPrefix;
+  private static final String pkgPrefix;
 
   // The two security package prefixes (IBM and SUN).
   private static final String IBM_SEC = "com.ibm.security";
@@ -103,7 +104,7 @@
       "getSelfCertificate";
 
     // Classes needed to manage certificates.
-    private static Class<?> certKeyGenClass, X500NameClass;
+    private static final Class<?> certKeyGenClass, X500NameClass;
 
     // Constructors for each of the above classes.
     private static Constructor<?> certKeyGenCons, X500NameCons;
@@ -111,7 +112,16 @@
     static
     {
       String x509pkg = pkgPrefix + ".x509";
-      String certAndKeyGen = x509pkg + ".CertAndKeyGen";
+      String certAndKeyGen;
+      if (pkgPrefix.equals(IBM_SEC)
+          || System.getProperty("java.version").matches("^1\\.[67]\\..*"))
+      {
+        certAndKeyGen = x509pkg + ".CertAndKeyGen";
+      }
+      else
+      { // Java 8 moved the CertAndKeyGen class to sun.security.tools.keytool
+        certAndKeyGen = pkgPrefix + ".tools.keytool" + ".CertAndKeyGen";
+      }
       String X500Name = x509pkg + ".X500Name";
       try
       {

--
Gitblit v1.10.0