Ho creato nuovi moduli per il software scritto in java. Questo software viene eseguito dal file jar. Le mie classi estendono le classi in questo software. Voglio scrivere un plugin che aggiunge nuove classi al file jar. So come estrarre un file jar nella directory e aggiungerli al file jar usando il pacchetto java.util.jar ma poiché ci sono molti file da estrarre dal file, è possibile aggiungere nuove classi senza estrarre i file alla cartella, in qualche modo direttamente.Come aggiungere nuove classi java alle classi esistenti nel file jar
risposta
jar uf jar-file input-file(s)
Consentirà di aggiungere new files/update file esistenti in jar senza estrarre.
È possibile utilizzare il seguente comando
jar uf foo.jar foo.class
Questo funziona solo al 50% poiché tale comando non inserirà la classe nel pacchetto corrispondente struttura ad albero. – m0skit0
@ m0skit0 Per mettere la classe nella struttura tres è necessario passare il nome della classe con la struttura della directory. jar uf foo.jar /com/test/foo.class –
La tua domanda indica che si vuole fare questo a livello di codice, non utilizzando la riga di comando jar
strumento.
Dalla documentazione risulta che avrete almeno bisogno di ottenere un JarInputStream
da un JarFile
esistente, iterare le voci utilizzando getNextJarEntry
, e scrivere in un JarOutputStream
con le voci, anche aggiungendo i propri nuovi file utilizzando il nuovo JarEntry
oggetti per ogni nuovo file.
Here's codice di esempio per la scrittura di un vaso da zero a livello di codice, questa dovrebbe estendersi ben al vostro caso, con la differenza che la maggior parte degli oggetti JarEntry
sarà venuta da un JarInputStream
.
- 1. Come aggiungere metodi statici alle classi Java in Kotlin
- 2. Come utilizzare le classi da file .jar?
- 3. java - Quante classi sono troppe? Quando è opportuno aggiungere nuove classi?
- 4. Come estrarre le classi dal file .jar?
- 5. Come accedere alle risorse nel file JAR?
- 6. Nascondere classi pubbliche in JAR
- 7. Estendere o aggiungere nuove classi in fase di esecuzione in Java
- 8. Classi di elenco in un file jar
- 9. Come posso aggiungere i riferimenti alle classi utilizzati nell'intestazione -Swift.h?
- 10. JAXB schemagen non fa riferimento alle classi nel file episodio
- 11. Pacchetti e classi Java
- 12. Come aggiungere file Java JAR al progetto Grails?
- 13. Il caricatore di classi di applet non riesce a trovare una delle classi nel jar
- 14. Xcode non riconosce immediatamente nuove classi (iOS)
- 15. Come utilizzare le classi Ruby impacchettate usando warbler come jar nel codice Java?
- 16. Precaricamento di classi/librerie java all'avvio del jar?
- 17. Aggiunta di metodi alle classi POCO
- 18. Jar dipendente dalle classi nel progetto di guerra
- 19. Classi Java più interessanti/utili?
- 20. Più classi eseguibili all'interno di JAR, come eseguirle?
- 21. Come aggiungere due classi CSS da controllare nel codice?
- 22. Accesso alle classi Matlab nel codice MEX/C
- 23. Matlab non può vedere alcune delle mie classi java (non tutte) nel pacchetto jar
- 24. In che modo Groovy aggiunge nuovi metodi alle classi Java?
- 25. Genera jar minimizzato con solo classi utilizzate
- 26. classi parziali java
- 27. Come escludere i jar da aggiungere nel file WAR
- 28. PyCharm docstrings che collegano alle classi
- 29. Alternative alle classi astratte in Ruby?
- 30. Come aggiungere file/cartelle esistenti a Eclipse
Mi viene in mente il modding di minecraft. Per curiosità, hai scritto questo software che stai cercando di estendere te stesso? Ci sono modi migliori per farlo in quel caso, usando il caricamento dinamico della classe. – Wug
Non è necessario modificare un file jar esistente. Basta mettere le classi nel proprio barattolo e assicurarsi che entrambi i barattoli siano sul classpath. –
Possibile duplicato dello stesso utente: http://stackoverflow.com/questions/11852954/changing-code-at-runtime-in-java –