2017-04-14 15 views
1

Ich spiele bei Minecraft (berühmte Java-Spiele), ich möchte die JAR-Datei, die Minecraft verwendet, neu schreiben (ersetzen Sie die 1.7.10-OptiFine_HD_U_D6.jar durch eine andere 1.7.10-OptiFine_HD_U_D6. jar) Wenn Minecraft läuft und ohne Minecraft zu schließen Ich teste diesen Code, aber die Datei wird nicht gelöscht, weil Minecraft es verwendet. https://hastebin.com/iwuxiyokuy.cpp (Ich habe diesen Code in den Code von Minecraft, dachte ich, dass, wenn Minecraft schläft, wird es nicht als eine Datei im Einsatz betrachtet werden) Aber ich habe einige Ideen ausprobiert und ich fand dies: In Eclipse können Sie umschreiben der 1.7.10-OptiFine_HD_U_D6.jar ohne Mine Schließen (wie diese http://hpics.li/4971e5f)Eine in java verwendete Datei umschreiben

Also, wie kann ich umschreiben, in java, 1.7.10-OptiFine_HD_U_D6.jar wie Eclipse, wenn Mine läuft und ohne Mine zu schließen?

Einen schönen Tag noch!

(Sorry für mein schlechtes Englisch Ich bin jung und ich bin Französisch: /)

+0

Auch wenn Sie die Datei ändern konnten, würde es nicht tun, was Sie wollen. Wenn das Spiel ausgeführt wird, wurden viele seiner Klassen bereits aus der JAR-Datei geladen. Das Ändern von Klassen in der JAR wird den Code nicht ändern, den das Spiel bereits in RAM geladen hat. – Wyzard

+0

Das ist was ich will :) (= um die JAR zu ändern, nachdem Minecraft es geladen hat, ohne die Änderungen des neuen Jar und ohne geladene Minecraft wieder anzuwenden) Also wie kann ich das tun? (ohne Eclipse) –

+0

Sie können nicht sicher sein, dass die Änderungen auch nicht * angewendet werden. Java lädt Klassen nur, wenn sie benötigt werden. Das Spiel hat also einige Klassen geladen, aber (noch) nicht alle. Wenn Sie das JAR ersetzen, wenn das Spiel später mehr Klassen benötigt, werden die neuen Versionen geladen. Sie werden am Ende eine Mischung aus alten und neuen Klassen verwenden, die wahrscheinlich einen Absturz verursachen wird. – Wyzard

Antwort

1

Das Problem ist, dass Ihr Betriebssystem (Windows in diesem Fall) sperrt die Datei, da sie von Minecraft verwendet wird (Java). Es gibt nichts, was Sie in Java tun können, um diese Einschränkung zu umgehen.

Der Dialog, der besagt, dass die Datei bereits existiert, ist lediglich eine Warnung von Eclipse, so dass Sie eine bereits existierende/falsche Datei nicht versehentlich überschreiben; Es hat nichts damit zu tun, dass das Betriebssystem die Datei sperrt.

Aus Neugier, warum willst du die Datei ersetzen, während Minecraft läuft? Warum nicht Minecraft schließen, die Datei ersetzen und Minecraft erneut starten? Ich bezweifle stark, dass Minecraft die Datei lädt, nachdem sie beim Start geladen wurde.

bearbeiten 1: Dies sollte tun:

File source = new File("path/to/source/file"); 
File destination = new File("C:/Users/Victor/AppData/Roaming/.minecraft/versions/1.7.10-OptiFine_HD_U_D6/1.7.10-OptiFine_HD_U_D6.jar"); 
try { 
    Files.copy(source.toPath(), destination.toPath(), StandardCopyOption.REPLACE_EXISTING); 
} catch (IOException exception) { 
    exception.printStackTrace(); 
} 
+0

"Das Dialogfeld, das besagt, dass die Datei bereits vorhanden ist, ist einfach eine Warnung von Eclipse, so dass Sie eine bereits vorhandene falsche Datei nicht versehentlich überschreiben, es hat nichts mit der Betriebssystemsperre zu tun die Datei." Hum ... Eclipse lässt mich die Datei überschreiben (ich werde Ihnen einige Screenshots geben) Dies ist die .jar, die minecraft verwendet, wenn es ausgeführt wird printscr.com/ews8fo Wenn ich eine andere .jar an der gleichen Stelle exportieren, Eclipse überschreiben Sie die Datei http://printscr.com/ewsa5k Wie Sie sehen können, hat sich die .jar geändert, aber Minecraft läuft http://prntscr.com/ewsaex Also, wie könnte ich das tun? –

+0

Der Punkt ist: ** Sie können das überhaupt nicht tun **.Sie können ein JAR ändern, nachdem Java es bereits geladen hat. Wenn das JAR einmal geladen wurde, wird es nicht erneut geladen, sodass nach dem Laden des Mods keine Änderungen mehr vorgenommen werden. – linkD

+0

Das ist was ich will :) (= um die JAR zu ändern, nachdem Minecraft es geladen hat, ohne die Änderungen des neuen Jar und ohne geladene Minecraft wieder anzuwenden) Also wie kann ich das tun? (ohne Eclipse) –