2017-05-29 1 views

Antwort

1

gemacht ein leerer Ordner auf meinem Desktop.
Kopierte C: \ Programme \ Java \ jre1.8.0_72 \ bin \ java.exe in den leeren Ordner.
Kopierte HelloWorld.class von wo ich es kompiliert hatte.
Begann eine neue cmd mit seinem aktuellen Verzeichnis auf den neuen Ordner.
typisierten in der folgenden aller Umgebungsvariablen, um loszuwerden:

for /f "delims==" %a in ('set') do set %a=

Karo zu sicherstellen, dass sie alle weg waren:

set

Welche Ausgabe wie folgt hergestellt:

enter image description here

Das zeigt, dass jetzt kein Klassenpfad oder Pfad oder eine andere Umgebungsvariable festgelegt ist.
So, jetzt gebe ich die folgenden, und sehen Sie das (erwartete Ergebnis):

enter image description here

Die recht ordentlich ist, denn das ist nur 1 K für die .class-Datei und 203K für java.exe ist.

Kann es wirklich so einfach sein?

Nein. Ich denke, ich werde es noch einmal versuchen. Ich muss java.dll und .jar Dateien über die Windows-Registrierung erhalten.

In meiner Lektüre entdeckte ich, dass die JRE im JDK enthalten keine Registry-Referenzen enthält. Ich werde die JRE von einer Installation auf einem meiner Computer auf ein Flash-Laufwerk zusammen mit der HelloWorld.class-Datei kopieren. Das Ergebnis auf dem Flash-Laufwerk sieht wie folgt aus:

just a stock jre from the jdk and HelloWorld.class

Dann auf einem Computer ausgeführt wird Hello World versuchen, ich werde mit NO Java überhaupt installiert ist. Und hier ist es, was das Ergebnis, dass aussah:

It worked!

Das ist ziemlich cool. Keine Registrierungsbeschwerden, kein installiertes Java, und doch lief es gut! Immerhin sind es 186 MB.

Ich denke, der nächste Schritt ist, Dinge zu entfernen und zu sehen, wie weit ich gehen kann, bevor es nicht mehr funktioniert.

Um zu beginnen, werde ich alles außer java.exe entfernen, aber ich werde die Verzeichnisstruktur in Ruhe lassen.

Nun, das ist interessant:

it didn't find java.dll AND it expected a directory entry

Ich denke, es die Registrierung, nachdem alle nicht überprüft. Ich denke, ich sollte java.dll zurück und versuchen Sie es erneut. Also hier ist, was in jre \ ist auf dem Flash-Laufwerk jetzt:

just java.exe and java.dll

Und hier ist das Ergebnis:

Error: could not open 'D:\jre\lib\amd64\jvm.cfg'

Also ich zumindest die Datei zu benötigen. Interessanterweise ist, dass das einzige, was im amd64 Verzeichnis trotzdem:

jvm.cfg

Und das gibt uns den nächsten Schritt ...

Error: missing 'server' JVM at 'D:\jre\bin\server\jvm.dll'

Okay, so fügen Sie einfach das auch. Nun, es wollte jre \ bin \ verify.dll.

Und dann wollte das jre \ bin \ zip.dll. Jetzt

, die benötigt java/lang/Objekt, so dass ich denke, wir brauchen jre \ lib \ rt.jar

Und raten Sie mal, was? Das war genug:

enter image description here

Somit ist der gesamte jre minimale Stellfläche war: 69,1 MB (72.519.711 Byte)

Vergleichen Sie das mit dem jre Gesamt Stellfläche: 186 MB (195.043.328 Bytes)

Kaum scheint die Mühe wert. Das nächste Mal werde ich nur die JRE von der JDK mit allem darin verwenden.

+0

Ohne 'rt.jar'? Sie sollten eine fehlende Klassendefinition für 'java.lang.String' bekommen. –

+0

Ich weiß. Kinda hat mich auch überrascht. Könnte ich einen über einen Registrierungseintrag oder etwas erhalten?

+0

Abschließende Notiz. Ich denke, ich weiß, warum Java Server \ java.dll wollte. Es wird in der jvm.cfg erwähnt: -server KNOWN –

Verwandte Themen