Quando c'erano JAR duplicati con versioni diverse, il comportamento era molto incoerente. Qualcuno sa come la JVM tratta i duplicati?Come funziona JVM con JAR duplicati di diverse versioni
risposta
Il classloader cerca il classpath in ordine e utilizza la prima classe corrispondente trovata.
FWIW, questo è un esempio di un argomento maggiore (modularità) indirizzata da OSGi e Project Jigsaw/JSR 294 in JDK 7Java 9.
La tua domanda è una buona motivazione per l'argomento: il classpath venerabile e semplice può essere stato una buona idea alla sua nascita, ma è certamente un punto dolente nell'età odierna di alta dipendenza dalle librerie di terze parti.
Jigsaw non è in realtà in JDK 7 ma è pianificato per JDK 9. non ancora rilasciato. FWIW Ho inviato una modifica a questo errore fattuale ma è stata rifiutata (non dall'autore) perché "non aveva senso come modifica" e "denaturato l'originale" intento del post " – gregfqt
- 1. jar eseguibile con jvm args
- 2. Scala funziona bene su JVM di proprietà?
- 3. Come rilevare duplicati JAR nel classpath?
- 4. Usa icone diverse con versioni di Android SDK diverse
- 5. Java Classloader - come fare riferimento a diverse versioni di un jar
- 6. Avere dipendenze diverse nelle versioni di valutazione?
- 7. Maven - dipendenze transitive con diverse versioni
- 8. boost :: TIME_UTC (_) con diverse versioni boost
- 9. Utilizzo di diverse versioni di python con virtualenvwrapper
- 10. Caricamento su cheeseshop diverse versioni di un pacchetto per diverse versioni di Python
- 11. strano comportamento Metodo di default con diverse versioni di Java
- 12. Utilizzo di bug Python in diverse versioni
- 13. Include una libreria con diverse versioni di iOS SDK?
- 14. Come rielaborate le diverse versioni di un'immagine in Carriewave?
- 15. Come eseguire unit test contro diverse versioni di una dipendenza
- 16. Come eseguire py.test contro diverse versioni di python?
- 17. Come identificare se due diverse versioni di gcc sono compatibili?
- 18. Passaggio tra diverse versioni JDK in Windows
- 19. Come JVM funziona quando due jar uguali sono inclusi nel classpath
- 20. apt-get install per diverse versioni python
- 21. Come eseguire diverse versioni di node.js nello stesso tempo?
- 22. come usare diverse versioni di firefox usando il webdriver?
- 23. Come utilizzare RVM e diverse versioni di binari
- 24. 301/302 Reindirizzamento non funzionante in Android (funziona in modo diverso in versioni diverse)
- 25. Uso di diverse versioni del file dll in un'app
- 26. Il ricevitore di trasmissione funziona in modo diverso su diverse versioni di Android (4.1.1 e 4.2.2)
- 27. Come funziona l'attesa/notifica a livello JVM?
- 28. Versioni diverse della stessa dipendenza in Maven
- 29. AddOrUpdate funziona come previsto e produce duplicati
- 30. Quando JVM di Java decomprime i file jar?
In generale, questo è corretto. Tuttavia, dipende dall'implementazione del classloader. Ad esempio, quando si caricano le classi in un framework Web, i file jar/war/ear/sar rilasciati possono essere controllati prima del classpath ufficiale. –