web-dev-qa-db-fra.com

Impossible d'hériter de l'erreur de classe finale

Que signifie cette erreur. Elle fonctionne bien dans Eclipse mais pas dans l'idée Intellij

Exception in thread "main" Java.lang.VerifyError: Cannot inherit from final class
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClassCond(ClassLoader.Java:631)
at Java.lang.ClassLoader.defineClass(ClassLoader.Java:615)
at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:141)
at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:283)
at Java.net.URLClassLoader.access$000(URLClassLoader.Java:58)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:197)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
at com.couchbase.client.ViewConnection.createConnections(ViewConnection.Java:120)
at com.couchbase.client.ViewConnection.<init>(ViewConnection.Java:100)
at com.couchbase.client.CouchbaseConnectionFactory.createViewConnection(CouchbaseConnectionFactory.Java:179)
at com.couchbase.client.CouchbaseClient.<init>(CouchbaseClient.Java:243)
at com.couchbase.client.CouchbaseClient.<init>(CouchbaseClient.Java:175)
at com.couchbase.App.putincbase(App.Java:122)
at examplesCons.TestCons.run(TestCons.Java:89)
at examplesCons.TestCons.main(TestCons.Java:121)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
at Java.lang.reflect.Method.invoke(Method.Java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:120)

J'obtiens cette erreur lorsque j'essaie d'exécuter couchbase en utilisant couchbase-client-1.1.6.jar d'Intellij IDea.

13
TommyT

si vous utilisez kotlin, ajoutez open à votre déclaration de classe (étend RealmObject)

52
itzhar

Le message signifie ce qu'il dit.

Quelque part, vous avez réussi à créer une classe qui étend une superclasse, où la superclasse a été déclarée comme final.

La cause la plus probable est que vous avez un conflit entre votre chemin de classe de génération et votre chemin de classe de lancement. En d'autres termes, vous compilez votre sous-classe avec une version de la superclasse qui n'est pas final, puis vous exécutez avec une version qui est final. Le vérificateur dit (correctement) que c'est faux.


Si ce n'est pas votre build/l'une de vos classes qui est à l'origine de cela, alors c'est un conflit interne au sein des classes clientes CouchDB que vous utilisez. En effet, le fait qu'il s'agit d'un VerifyError plutôt que d'un IncompatibleClassChangeError suggère que cela peut être un problème avec certains bytecodes générés dynamiquement.

12
Stephen C

J'ai également fait face à cela avec IntelliJ Idea: 2018.3 Community Edition, mais l'exécution de ce qui suit l'a corrigé pour moi:

mvn -U idea:idea clean compile install -DskipTests
0
Saurabh