J'ai mis à niveau le studio Android et j'ai ce comportement étrange
lorsque j'exécute mes tests unitaires, ils s'exécutent et se terminent correctement (j'ai introduit des erreurs pour m'assurer qu'il en était ainsi)
mais lorsque je mets un point d'arrêt et que j'utilise des tests de débogage en java, le jvm se bloque avec cette erreur:
"C:\Program Files\Android\Android Studio4\jre\bin\java.exe" - agentlib:jdwp=transport=dt_socket,address=127.0.0.1:64493,suspend=y,server=n -ea -javaagent:C:\Users\imavrelos\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlinx\kotlinx-coroutines-core-jvm\1.3.9\4be434f5e86c1998a273e7f19a7286440894f0b0\kotlinx-coroutines-core-jvm-1.3.9.jar -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\imavrelos\AppData\Local\Google\AndroidStudio4.1\groovyHotSwap\gragent.jar -javaagent:C:\Users\imavrelos\AppData\Local\Google\AndroidStudio4.1\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Android\Android Studio4\lib\idea_rt.jar" com.intellij.rt.execution.CommandLineWrapper C:\Users\imavrelos\AppData\Local\Temp\idea_classpath1657759720 com.intellij.rt.junit.JUnitStarter -ideVersion5 @w@C:\Users\imavrelos\AppData\Local\Temp\idea_working_dirs_junit.tmp @C:\Users\imavrelos\AppData\Local\Temp\idea_junit.tmp -socket64492 Connected to the target VM, address: '127.0.0.1:64493', transport: 'socket' java.lang.NoClassDefFoundError: kotlin/collections/AbstractMutableMap at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:757) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:419) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:352) at kotlinx.coroutines.debug.internal.DebugProbesImpl.<clinit>(DebugProbesImpl.kt:30) at kotlinx.coroutines.debug.AgentPremain.<clinit>(AgentPremain.kt:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386) at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401) Caused by: java.lang.ClassNotFoundException: kotlin.collections.AbstractMutableMap at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:419) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) at java.lang.ClassLoader.loadClass(ClassLoader.java:352) ... 20 more FATAL ERROR in native method: processing of -javaagent failed Disconnected from the target VM, address: '127.0.0.1:64493', transport: 'socket' Process finished with exit code 1 Exception in thread "main"
quelqu'un a-t-il cette erreur? des suggestions sur la façon de résoudre ce problème?
3 Réponses :
J'ai corrigé cette erreur en modifiant la configuration actuelle d'exécution / débogage et en désactivant l'option "Raccourcir la ligne de commande". Avant, il était défini sur "classpath file", ce qui semble signaler l'erreur ci-dessus dans certains cas.
Dans mon cas, j'ai dû définir cette valeur sur JAR Manifest pour pouvoir déboguer mes tests unitaires
non ce n'était pas le problème, je me suis heurté à des erreurs de chemin de classe à plusieurs reprises (car j'utilise des noms vraiment descriptifs pour mes tests), donc j'utilise toujours un raccourcisseur, dans mon cas il semble s'être corrigé. . ???? J'ai fermé le projet pour la nuit, ouvert le lendemain et il a juste commencé à fonctionner, je suppose que j'aurais dû essayer de l'éteindre et de le rallumer
le problème est revenu, malheureusement, je ne peux pas en utiliser car j'ai tendance à écrire de longs noms de fonctions de test, mais le manifeste jar a fonctionné
Le réglage sur none
désactivera un test unitaire avec une erreur: Command line is too long. Shorten command line for UnitTest.someTest.
Je l'ai corrigé en modifiant la configuration actuelle d'exécution / débogage et en choisissant le manifeste JAR dans l'option de ligne de commande Raccourcir.
J'ai écrit un test unitaire pour une bibliothèque. Lors de l' exécution avec Ctrl + Shift + F10 habituel, il s'exécutait, mais lors d'une tentative de débogage du test, il ne fonctionnait pas avec l'erreur: 'Exception dans le thread "main" java.lang.NoClassDefFoundError: kotlin / collections / AbstractMutableMap'.
Ensuite, j'ai déplacé le test unitaire vers le test d' instrumentation .