Gdy były zduplikowane pliki JAR o różnych wersjach, zachowanie było bardzo niespójne. Czy ktoś wie, jak JVM radzi sobie z duplikatami?W jaki sposób JVM radzi sobie z duplikatami JAR różnych wersji
Odpowiedz
Program ładujący klasy wyszukuje w kolejności i używa pierwszej pasującej klasy.
FWIW ta jest przykładem większej temat (modułowość), która jest skierowana przez OSGi i Project Jigsaw/JSR 294 w JDK 7Java 9.
Twoje pytanie jest dobrą motywacją do tego tematu: czcigodna, prosta ścieżka klasy mogła być dobrym pomysłem na jej początek, ale z pewnością jest to boląca kwestia dzisiejszej dużej zależności od bibliotek 3rd party.
Jigsaw w rzeczywistości nie jest w JDK 7, ale planowany na jeszcze nie wydany JDK 9. FWIW Złożyłem poprawkę do tego faktycznego błędu, ale zostało odrzucone (nie przez autora), ponieważ "nie ma sensu jako edycja" i "zdenaturowało oryginał zamiar postu " – gregfqt
- 1. W jaki sposób NPM radzi sobie z wersją konfliktów wersji?
- 2. W jaki sposób Firebase radzi sobie z problemami dotyczącymi pochodzenia?
- 3. W jaki sposób MongoDB radzi sobie z równoczesnymi aktualizacjami?
- 4. W jaki sposób Jenkins radzi sobie z interaktywnymi skryptami powłoki?
- 5. W jaki sposób JSPM radzi sobie z plikami CSS?
- 6. W jaki sposób condition_variable :: wait_for() radzi sobie z fałszywymi wybudzeniami?
- 7. W jaki sposób Google radzi sobie z indeksowaniem treści podczas korzystania z interfejsu History API?
- 8. W jaki sposób standard radzi sobie z iteratorami samoreferencyjnymi w funkcjach wstawiania kontenerów?
- 9. W jaki sposób python radzi sobie z modułem i pakietem o tej samej nazwie?
- 10. W jaki sposób "błyszczący" pakiet R radzi sobie z ramkami danych?
- 11. W jaki sposób Lazy <T> radzi sobie z ograniczeniem new()?
- 12. W jaki sposób wielowątkowa aplikacja C radzi sobie z nieudanym malloc()?
- 13. Zrozumienie, w jaki sposób kompilator C# radzi sobie z metodami łańcuchowymi linq
- 14. W jaki sposób GDB radzi sobie z dużymi (> 1 GB) plikami debugowania?
- 15. Scala nie radzi sobie z dużymi obiektami?
- 16. Runnable jar with jvm args
- 17. Czy SVN radzi sobie z problemami z wielkością liter?
- 18. Hostowane bazy danych: jak radzi sobie z opóźnieniem?
- 19. Jak radzisz sobie z duplikatami Amazon Kinesis Record?
- 20. W jaki sposób maszyny JVM implementują IdentityHashMap?
- 21. W jaki sposób Akka obsługuje wersje wiadomości?
- 22. Spring @Value nie radzi sobie z wartościami z pliku właściwości
- 23. Gdy wielu klientów naciska na to samo zdalne repozytorium, w jaki sposób git radzi sobie z problemami z współbieżnością?
- 24. Jak dobrze wtyczka migracyjna jQuery radzi sobie z przestarzałym kodem?
- 25. Czy Python GC radzi sobie z takimi cyklami odniesienia?
- 26. ESS nie radzi sobie dobrze z data.table i knitr
- 27. Po git-flow w jaki sposób radzić sobie z poprawką wcześniejszej wersji?
- 28. W asemblerze, w jaki sposób radzisz sobie z C struct?
- 29. W jaki sposób zaimplementowana jest trwała funkcja JVM w ciastku?
- 30. W jaki sposób radzimy sobie z plikami pomocy?
Generalnie jest to poprawne. Jednak zależy to od implementacji programu ładującego klasy. Na przykład podczas ładowania klas w środowisku sieciowym wdrożone pliki jar/war/ear/sar mogą być sprawdzane przed oficjalną ścieżką klas. –