Klassen, die nicht zu den Standardpaketen und veralteten Klassen gehören, können nicht Teil einer jdk sein. In Ihrem Fall können Sie versuchen, das Problem mit den Klassen des Pakets javax.security.cert
zu lösen. Auf der Suche nach Google finden Sie einige Tutorials wie this one.
einfach zu vervollständigen die Antwort richtig ist, dass „in der Regel“ beide kompilierten Code aus dem gleichen Quellcode in der offenen jdk kommen und in dem Orakel jdk. Aber Oracle JDK und Open JDK haben unterschiedliche Lizenzen, so dass es auch ein paar kleine Unterschiede gibt. Im Allgemeinen beziehen sich die Unterschiede nicht auf die Quelle gemeinsamer Klassen, sondern auf das Vorhandensein oder Fehlen von Klassen oder ganzen Paketen. Als Beispiel siehe font library.
Dies ist nicht der einzige Unterschied. Wie Sie in Ihrem Code notiert haben, unterscheiden sich auch die Sicherheitspakete, da der offene jdk auch die alte Sun-Version von x509-Zertifikatsklassen und das Oracle-jdk nicht hinzugefügt hat. Es gibt keine Garantie dafür, welche Klassen enthalten sind oder nicht, wenn sie nicht Teil der Standardpakete sind. Wenn Sie Probleme beim Ausführen Ihres Codes in verschiedenen jdk-Umgebungen haben, verwenden Sie nur Standardpakete oder importieren Sie Bibliotheken explizit nach Bedarf.
Das ist ein Sonnenpaket. Ich bezweifle, dass es garantiert immer verfügbar ist wie Java und Java Pakete. OpenJDK liegt wahrscheinlich hinter der Implementierung von Oracle zurück. – duffymo
Es gibt eine spezielle Warnung vor der Verwendung von 'sun. *' Paketen im Javadoc, und das ist seit 20 Jahren dort. – EJP