Nuestros desarrolladores estrellas han agotado sus reservas de café, investigando diariamente por la respuesta, hasta que Lucas halló la respuesta en Gitea así que en este momento la compartimos contigo.
Solución:
Hay un problema presentado al respecto al que respondió uno de los mantenedores de Retrofit:
La reflexión soluciona un error en el JDK que se solucionó en 14, pero solo se usa para los métodos predeterminados. Como solo es una advertencia, no impide que su llamada funcione.
Así que sus opciones son
- seguir con Retrofit 2.8.x, y
- ignorar la advertencia, o
- actualizar a Java 14
- degradar a Retrofit 2.7.*
hoy tengo el mismo error. Importé Retrofit 2.8.1 a mi proyecto y apareció. Intenté todo, pero una cosa ayudó: cambié mi versión Retrofit a 2.7.2 y ahora todo funciona. ¡Buena suerte!) Si usas maven:
com.squareup.retrofit2
retrofit
2.7.2
Gradle:
compile group: 'com.squareup.retrofit2', name: 'retrofit', version: '2.7.2'
Si se encuentra entre las versiones 9 y 13 de Java y quiere seguir con las versiones Retrofit 2.8 o superiores, puede ejecutar su archivo jar de esta manera:
java --add-opens=java.base/java.lang.invoke=ALL_UNNAMED my_jar.jar
Tenga en cuenta que esto no funcionará en Java 8, por lo que si realmente lo necesita, puede piratear una solución como esta (funciona en * nix):
if java --add-opens 2>&1 | grep 'requires modules' >/dev/null; then
java --add-opens=java.base/java.lang.invoke=ALL-UNNAMED -jar my_jar.jar
else
java -jar my_jar.jar
fi
Si está interesado en investigar esto más a fondo, puede consultar el código que lo provoca.
También encontré que esto tiene buena información: https://blog.codefx.org/java/five-command-line-options-hack-java-module-system/
Si usa Gradle, también puede intentar agregar argumentos jvm predeterminados: ¿Cómo agrego argumentos JVM predeterminados con Gradle? Sin embargo, eso aún no le brinda un archivo jar simple que simplemente funciona.
Te mostramos las comentarios y valoraciones de los lectores
Al final de la página puedes encontrar las acotaciones de otros programadores, tú incluso eres capaz insertar el tuyo si te gusta.