7
votes

java.lang.verifyError sur la méthode qui a fonctionné il y a une minute

excuses à l'avance mais je n'ai jamais vu cette erreur avant et je ne sais pas quoi inclure. J'utilise Netbeans et j'ai soudainement commencé à obtenir cette erreur:

debug:
Have no FileObject for C:\Program Files (x86)\Java\jdk1.6.0_20\jre\lib\sunrsasign.jar
Have no FileObject for C:\Program Files (x86)\Java\jdk1.6.0_20\jre\classes


1 commentaires

Par hasard, cela a eu lieu lorsque vous utilisiez des expressions Java8 Lambda?


7 Réponses :


0
votes

Essayez simplement de mettre un super () au début de votre constructeur en tant qu'adrite états.

Je pensais que c'était généralement déduit et ajouté sans la contrainte pour l'écrire, peut-être la superclasse de Costoperations n'a pas de constructeur vide.


3 commentaires

Les costopérations n'ont pas de superclasse.


@Travis toutes les classes sauf objet ont une superclasse; Si vous n'avez pas spécifié un, c'est objet


Désolé, je voulais dire que je ne l'ai pas spécifié.



9
votes

A VerifyError signifie que le bytecode n'est pas valide, qui pointe un problème de compilateur. J'essaierais de tout reconstruire dans l'espoir que cela s'en va, mais sinon vous devriez déposer un bug. Le bytecode est tenu d'appeler le constructeur de Superclass manuellement via SUPERCLASSONVIRTUALVIRTUELVIRTUELS / () V , mais vous n'auriez pas besoin d'ajouter super (); dans la source , le compilateur doit gérer que


0 commentaires

0
votes

Vérifié: Bug compilateur.


2 commentaires

Juste par curiosité. Quel sdk est-ce?


Je doute sérieusement que c'est un bug de compilateur; voir ma réponse.



1
votes

Je doute sérieusement qu'il s'agisse d'un bug de compilateur Java. Quelque chose comme ça aurait probablement été remarqué par quelqu'un d'autre et signalé comme un bug. Mais vous pouvez vérifier cela en recompilant le fichier et en utilisant Javap code> pour démonter les bytecodes. Recherchez les instructions suivantes dans le code de constructeur:

    invokespecial #1 <Method java.lang.Object()>


0 commentaires

1
votes

C'est définitivement un problème de compilateur: le bytecode généré a un format binaire différent.

Pour résoudre ceci: Faites un clic droit sur le projet -> Propriétés -> Sources -> Format Source / Binaire

changez-le au format adapté à votre code.


0 commentaires

-2
votes

i opine Il peut être provoqué une inadéquation de spécifications de classe / constructeur. Je viens de résoudre un problème similaire dans lequel la classe a été déclarée avec un spécificateur d'accès au paquet, mais son constructeur a été déclaré public.

Le simple fait de faire le constructeur dispose également d'un spécificateur d'accès au paquet résolu le problème. xxx


0 commentaires

0
votes

Cela m'est arrivé à Netbeans. Dans NetBeans, lorsque vous essayez de copier un fichier .java dans le même répertoire sans "copie du refacteur", il place le nouveau fichier comme "YourJavafile_1.1.java" et problème. Mais si vous copiez ce fichier avec "copie du refacteur", il n'y a pas de problème.

Cela donne le nom comme "YourJavafile1.java", mais avec refactoring.


0 commentaires