编译器错误找不到符号--Java

时间:2013-05-27 18:31:19

标签: java imagej

首先,我是Java的新手,我的编程总体上是生锈的。所以我可能错过了一些非常简单的事情。

错误:

cannot find symbol
symbol  : method setMethod(java.lang.String)
location: class ij.plugin.Thresholder
        Thresholder.setMethod("Mean");

一些代码段: 这部分是第三方代码。我想尽量避免修改

public class Thresholder implements PlugIn, Measurements, ItemListener {
    private static String staticMethod = methods[0];

    public static void setMethod(String method) {
        staticMethod = method;
    }
}

我的代码(以及一些相关部分)

    import ij.plugin.Thresholder;
    public class CASA_ implements PlugInFilter,Measurements  {
    public void run(ImageProcessor ip) {
        track(imp, minSize, maxSize, maxVelocity);
    }

    public void track(ImagePlus imp, float minSize, float maxSize, float maxVelocity) {
        Thresholder.setMethod("Mean");         <-- This is the line the compiler hates
    }
}

为什么编译器要查找返回除void之外的其他东西的setMethod方法?

由于

2 个答案:

答案 0 :(得分:1)

您无法在类声明块中调用方法。您可以在构造函数中或在另一个方法中执行此操作(然后必须在该类上显式调用)。

答案 1 :(得分:0)

正如Makoto正确陈述的那样,你不能在课堂声明中调用Thresholder.setMethod("Mean")

在实现PlugInFilter的类中,您必须定义run(ImageProcessor ip)setup(String arg, ImagePlus imp)方法,那么为什么不在设置插件过滤器时设置阈值方法:< / p>

import ij.IJ;
import ij.ImagePlus;
import ij.measure.Measurements;
import ij.plugin.Thresholder;
import ij.plugin.filter.PlugInFilter;
import ij.process.ImageProcessor;

public class CASA_ implements PlugInFilter,Measurements  {
    // define instance variables:
    ImagePlus imp;

    /**
     * implement interface methods
     */
    public int setup(String arg, ImagePlus imp) {
        this.imp = imp;
        Thresholder.setMethod("Mean");
        IJ.log("Setup done.");
        return DOES_ALL;
    }

    public void run(ImageProcessor ip) {
        // do your processing here
    }
}

查看ImageJ plugin writing tutorialFiji's script editor及其模板(模板&gt; Java&gt; Bare PlugInFilter )作为起点。