Re-kompilieren eine Java-Klasse aus Glas
Ich habe eine ausführbare jar-Datei, die eine Klasse Datei mit einem falschen Wert. Ich verlangte, dass die Datei vom Autor und korrigiert den Wert.
Jetzt will ich es kompilieren und fügen Sie die kompilierte class-Datei in die jar und führe es aus.
Nicht überraschend, bekomme ich mehrere "cannot find symbol" - Fehler bei Verweise von benutzerdefinierten Objekten wurden in der jar-Datei.
Habe ich versucht die Datei zu kompilieren, durch einen Verweis auf die jar-Datei im classpath wie so
C:/> javac file.java -classpath C:/folder/where/jar/is
aber das scheint nicht zu funktionieren... bekomme ich den gleichen Fehler, als wenn nur das tut,
C:/> javac file.java
Gibt es eine Möglichkeit zum kompilieren dieser individuellen Klasse irgendwie verweisen auf die anderen Dateien in die jar?
Dank.
Fehler, die ich immer bin während folgenden einige der unten aufgeführten Vorschläge hier:
javac -classpath C:/jar/location.jar File.java Datei.java:226: cannot find symbol symbol : Klasse Zeug Lage: class com.geteilt wird.stuffers Zeug s1 = new Stuff(); ^
Zeug Klasse ist in das Glas, aber kann nicht gesehen werden von dem javac-Programm... ich habe das Gefühl, ich mache etwas falsch, aber Sie wissen nicht, wo? Danke.
- Buschmann, du hacker! Was der Autor würde Ihnen den source-code, anstelle von re-kompilieren, die alles für Sie?
- Cheeso, um Antworten auf die ur-F? -- Autor, der möchte, dass sein code unter der Operation -->bin aber weit von einem hacker, tho, dont sind dagegen die Hacker
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie wollen, kompilieren Sie die Datei so auf:
pro die javac Gebrauchsanweisung:
Sobald Sie zusammengestellt habe die neue Datei (wie in Herr Wird ' s Antwort), können Sie fügen Sie die neue Datei in die jar mit:
Werden Sie wahrscheinlich haben, um geben Sie die JAR-Datei selbst und nicht nur das Verzeichnis, in der es sich befindet.
Ich kann nur raten, aber hast du überprüfen, ob es braucht keine externe jar-Bibliotheken, die Sie haben können, um in Ihrer Zusammenstellung Befehl? Eine andere Sache, die Sie tun können, ist zu kompilieren, alle Klassen, etwas zu tun, wie
Wie andere erwähnt haben, einmal haben Sie die .class-Datei kompiliert, müssen Sie ersetzt die ältere version in der .jar
Werden Sie wahrscheinlich benötigen, um alle compile-Zeit-Abhängigkeiten zur Verfügung Wiederaufbau dieser Klasse. Wenn es ein open source Projekt könnte dies eine einfache Sache zu kommen. Wenn nicht, ist es schwieriger. Wenn der Autor Ihnen die Datei geschickt hat, er kann wahrscheinlich helfen Sie mit, dies auch. Sie könnten in der Lage sein, den Autor zu produzieren, einen Patch-Verteilung für Sie als gut. Quoten sind er/Sie hat bereits die build-Umgebung einrichten und diese sollte relativ einfach zu tun.
Ich würde versuchen, diesen Ansatz (und es sollte funktionieren, es sei denn, die 'ausgetestet' - Klasse nicht vorstellen a new error):
ein und löschen die classfile, dass
Sie ersetzen möchten
korrigiert java-Datei und stellen Sie sicher,
dass die geänderten jar ist auf der
classpath
classfile, das Glas
Sollte diese Arbeit. Wenn nicht - Fragen Sie den Autor für eine neue komplette Bibliothek.