草庐IT

java.lang.VerifyError : (class: ea/Individual, method: <init> signature: (I)V) 构造函数必须调用 super() 或 this()

coder 2024-03-18 原文

我在这个类中没有发现任何错误,但 Netbeans 在那个类中不断显示红色符号。类是

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ea;

/**
 *
 * @author riyad
 */

import java.util.Random;
import java.util.BitSet;

public class Individual 
{
    BitSet variable;

    double x;
    double fitness;
    double sharedFitness;
    final int SIZE;


    Random generator = new Random();

    public Individual(int SIZE)
    {
        this.variable = new BitSet(SIZE);
        this.fitness = 0;
        this.sharedFitness = 0;
        this.SIZE = SIZE;


        for(int i=0; i<SIZE; i++)
        {
            if(generator.nextBoolean())
            {
                variable.set(i);
            }
            else
            {
                variable.clear(i);
            }
        }

        x = Double.parseDouble(variable.toString());
    }


    public Individual copy()
    {
        Individual ind = new Individual(SIZE);

        this.variable = (BitSet) ind.variable.clone();
        this.fitness = ind.fitness;
        this.sharedFitness = ind.sharedFitness;
        this.x = ind.x;

        return ind;
    }

    public void evaluate()
    {
        fitness = x * Math.sin(Math.sqrt(x));
    }

    public boolean getBit(int i)
    {
        return variable.get(i);
    }

    public BitSet getBitSet()
    {
        return variable;
    }

    public void setBit(int i)
    {
        variable.set(i);
    }

    public void clearBit(int i)
    {
        variable.clear(i);
    }

    public double getFitness()
    {
        return fitness;
    }

    public double sharedFitness()
    {
        return sharedFitness;
    }

    public void setSharedFitness(double fitness)
    {
        this.sharedFitness = fitness;
    }

    public void setFitness(double fitness)
    {
        this.fitness = fitness;
    }
}

代码正在编译但出现运行时错误。

Exception in thread "main" java.lang.VerifyError: (class: ea/Individual, method: <init> signature: (I)V) Constructor must call super() or this()

在另一个类(class)中,使用了个人类(class):

ArrayList<Individual> pop = new ArrayList<Individual>();

这是 Individual 类被实例化的地方:

Individual temp = new Individual(STRING_SIZE);
pop.add(temp);

编辑

我没有手动重命名文件。所有编码都是在 Netbeans 中完成的。唯一的问题是当我创建个人实例时。

EDIT2

我把项目复制到另一个地方,一切又正常了。可能是 Netbeans 或 JDK 的 bug

最佳答案

您应该javap .class 文件并检查编译器是否在构造函数的开头附近生成了对 super() 的调用。

JVM validator 要求任何构造函数(当然 Object 除外)调用(可能通过另一个构造函数间接调用)它是父类(super class)的构造函数。通常情况下,如果您不这样做,编译器会自动插入对父类(super class)构造函数的调用,但在某些情况下可能会混淆为不这样做(尽管提供的代码看起来并不那么复杂)。

(而且,是的,您在 copy 的大部分地方交换了 thisind。)

关于java.lang.VerifyError : (class: ea/Individual, method: <init> signature: (I)V) 构造函数必须调用 super() 或 this(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579094/

有关java.lang.VerifyError : (class: ea/Individual, method: <init> signature: (I)V) 构造函数必须调用 super() 或 this()的更多相关文章

  1. ruby - 难道Lua没有和Ruby的method_missing相媲美的东西吗? - 2

    我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/

  2. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  3. Ruby 元类 : why three when defined singleton methods? - 2

    让我们计算MRI范围内的类别:defcount_classesObjectSpace.count_objects[:T_CLASS]endk=count_classes用类方法定义类:classAdefself.foonilendend然后运行:putscount_classes-k#=>3请解释一下,为什么是三个? 最佳答案 查看MRI代码,每次你创建一个Class时,在Ruby中它是Class类型的对象,ruby会自动为这个新类创建“元类”类,这是另一个单例类型的Class对象。C函数调用(class.c)是:rb_define

  4. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  5. ruby-on-rails - 在 ruby​​ 中使用 gsub 函数替换单词 - 2

    我正在尝试用ruby​​中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了

  6. ruby-on-rails - Rails 中的 NoMethodError::MailersController#preview undefined method `activation_token=' for nil:NilClass - 2

    似乎无法为此找到有效的答案。我正在阅读Rails教程的第10章第10.1.2节,但似乎无法使邮件程序预览正常工作。我发现处理错误的所有答案都与教程的不同部分相关,我假设我犯的错误正盯着我的脸。我已经完成并将教程中的代码复制/粘贴到相关文件中,但到目前为止,我还看不出我输入的内容与教程中的内容有什么区别。到目前为止,建议是在函数定义中添加或删除参数user,但这并没有解决问题。触发错误的url是http://localhost:3000/rails/mailers/user_mailer/account_activation.http://localhost:3000/rails/mai

  7. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  8. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  9. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  10. ruby - 怎么来的(a_method || :other) returns :other only when assigning to a var called a_method? - 2

    给定以下方法:defsome_method:valueend以下语句按我的预期工作:some_method||:other#=>:valuex=some_method||:other#=>:value但是下面语句的行为让我感到困惑:some_method=some_method||:other#=>:other它按预期创建了一个名为some_method的局部变量,随后对some_method的调用返回该局部变量的值。但为什么它分配:other而不是:value呢?我知道这可能不是一件明智的事情,并且可以看出它可能有多么模棱两可,但我认为应该在考虑作业之前评估作业的右侧...我已经在R

随机推荐