6 Stimmen

Wie kann man die Java JRE aus dem Quellcode (src.zip im JDK) erstellen?

Überraschenderweise konnte ich die Antwort auf diese Frage nicht finden.

Ich versuche, die Java JRE aus dem Quellcode neu zu erstellen. Ich erhalte den Java JRE-Quellcode durch Extrahieren der src.zip-Datei im JDK.

Wie kompiliere ich nach den Änderungen, die ich an der JRE vornehmen muss, den neuen Quellcode wieder in .java-Dateien (die ich dann in die rt.jar-Datei komprimieren kann).

Danke.

0 Stimmen

Was meinen Sie mit after making any changes I need

0 Stimmen

@Woot4Moo, ich meine einfach, dass ich nach der Bearbeitung des Quelltextes der JRE wieder meine eigene Version der JRE erstellen möchte. Zum Beispiel kann ich Object.java so bearbeiten, dass jedes Objekt ein anderes Feld oder eine spezielle Funktion hat. Mir ist klar, dass es viel bessere Möglichkeiten gibt, dies zu tun, aber ich gebe hier nur ein Beispiel.

1 Stimmen

Erhalten Sie irgendwelche Ausnahmen oder Fehler? Könnten Sie Ihren Ansatz nennen? Das würde anderen helfen, zu erkennen, was schief läuft.

3voto

Puce Punkte 36289

Bessere Chancen haben Sie, wenn Sie OpenJDK (die Basis der künftigen JDKs von Oracle/Sun) verwenden. http://openjdk.java.net/

Aber was wollen Sie eigentlich ändern? Vielleicht gibt es einen besseren Weg...

0 Stimmen

Ich fürchte, das OpenJDK reicht nicht aus (es unterstützt nicht alle Java-Anwendungen). Außerdem sollte dies eine triviale Aufgabe sein, da der Quellcode genau dort ist und nur noch gebaut werden muss.

2 Stimmen

Die src.zip enthält nicht alle Quellen und ich weiß nicht, was die Lizenz erlaubt. OpenJDK benötigt einige zusätzliche Binärdateien, die nicht Open Source sind, aber dann sollten alle Anwendungen problemlos laufen.

2voto

Peter Lawrey Punkte 511323

Wenn Sie eine Reihe von Klassen ändern wollen, müssen Sie nur diese Klassen kompilieren. Sie müssen nicht das gesamte JDK kompilieren, es sei denn, Sie beabsichtigen, es zu ersetzen.

Wenn Sie es nur patchen wollen, erstellen Sie ein JAR mit den geänderten Klassen und fügen Sie dieses dem Bootklassenpfad hinzu.

0 Stimmen

Ich denke, ich könnte jede Klasse, die ich ändere, einzeln kompilieren. Es überrascht mich jedoch, dass es einen Quellcode-Ordner gibt, der offenbar nicht einfach kompiliert werden kann (?).

1 Stimmen

Es ist für Bildungszwecke gedacht. Die JDK-Lizenz verbietet die Änderung von Standardbibliotheken/-klassen (Anwälte könnten eine strengere Auffassung vertreten).

2voto

Favonius Punkte 13720

Einige der Java-Quellen, aus denen sich rt.jar enthalten, werden während des Build-Prozesses Prozesses, aus Skripten und anderen Mitteln erzeugt. Einige der Eigenschaftsdateien werden auch auf diese Weise erzeugt, und einige der Eigenschaftsdateien werden in Java Quelle umgewandelt, die ebenfalls zu rt.jar. Ohne also zuerst einen vollständigen Build vorzunehmen und das 'gensrc'-Verzeichnis zu füllen, haben Sie nicht alle Quellen, aus denen rt.jar besteht.

Entnommen aus: http://www.java.net/forum/topic/jdk/java-se-snapshots-project-feedback/it-possible-just-build-rtjar

Wenn Sie also javac auf alle Java-Dateien in src.zip sagen, wird es nicht kompilieren, da der Abhängigkeitsgraph gebrochen ist (fehlende generierte Dateien)

Sehen Sie sich auch dies an: Wo bekomme ich den vollständigen Quellcode für rt.jar?

0 Stimmen

Danke! Was meinen sie mit einem vollständigen Bau? Bauen Sie den C-Quellcode des JDK?

0 Stimmen

@Tom: Nun, aus dem Link geht hervor, dass die vollständige Erstellung die Ausführung der Skripte beinhaltet, um den Boilerplate-Code und die Eigenschaftsdatei zu erzeugen. Obwohl ich nicht zu sicher bin, was es sonst noch beinhalten kann. Ich werde meine Antwort aktualisieren, wenn ich etwas erfahre, das es wert ist, mitgeteilt zu werden.

1voto

Woot4Moo Punkte 23471

Nach erneuter Prüfung der Frage. Javac auf einer dieser Dateien können Sie sie wiederherstellen. Außerdem kompiliert man .java-Dateien nicht in .java-Dateien, sondern in .class-Dateien. Sie können ein ANT-Build-Skript schreiben, um die schwere Arbeit für Sie zu erledigen.

0 Stimmen

@Woot4Moo, ich fürchte, das ist für die Erstellung des Low-Level-C-Quellcodes gedacht. Ich spreche lediglich von den Java-Dateien für die JRE-Datei rt.jar (sie befindet sich in src.zip im JDK-Ordner, nicht im Quellcode des JDK).

0 Stimmen

Ich glaube, das basiert auch auf OpenJDK, nicht wahr?

0 Stimmen

@Woot4Moo: Der Link, den Sie bereits erwähnt haben: download.java.net/jdk6/6u23/promoted/b05/docs/build/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X