Карта компиляции уменьшает Java-файл (содержащий основной) с определением класса в другом Java-файле - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь скомпилировать kmeans.java, который использует класс FloatArrayWritable. Я определил этот класс в FloatArrayWritable.java:

public class FoatArrayWritable implements Writable {

    public ArrayWritable array;

    @SuppressWarnings("unchecked")
        public FloatArrayWritable() {
        this(Collections.EMPTY_LIST);
    }

    public FloatArrayWritable(FloatWritable[] vectors) {
        array = new ArrayWritable(Float.class, vectors);
    }

    public void readFields(DataInput in) throws IOException {
        array.readFields(in);
    }

public void write(DataOutput out) throws IOException {
        array.write(out);
    }

}

когда я компилирую с этой командой: javac -classpath /home/aniruddha/team05/NGramCount/lib/hadoop-0.20.1-core.jar -d kmeans_classes / -Xlint kmeans.java FloatArrayWritable.java

Я испытываю эту ошибку: FloatArrayWritable.java:22: недопустимое объявление метода; требуется тип возврата public FloatArrayWritable () { ^ FloatArrayWritable.java:26: недопустимое объявление метода; требуется тип возврата public FloatArrayWritable (FloatWritable [] векторы) { ^ 2 ошибки

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2011

Вы должны убедиться, что имя класса соответствует имени конструктора.

Ошибка компилятора возникает из-за того, что конструктор соответствует обычной сигнатуре метода, за исключением, конечно, отсутствия возвращаемого типа.Если имя конструктора не соответствует имени класса, оно предполагает метод и ожидает возвращаемый тип.

0 голосов
/ 08 ноября 2011

Похоже на меня, как твои пальцы предали тебя:

открытый класс Foat ArrayWritable реализует Writable {

...