【问题标题】:Compile map reduce java file (containing main) with a class definition in a different java file使用不同的 java 文件中的类定义编译 map reduce java 文件(包含 main)
【发布时间】:2011-11-07 22:53:27
【问题描述】:

我正在尝试编译使用 FloatArrayWritable 类的 kmeans.java。我在 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:无效的方法声明;需要返回类型 公共 FloatArrayWritable() { ^ FloatArrayWritable.java:26:无效的方法声明;需要返回类型 公共 FloatArrayWritable(FloatWritable[] 向量) { ^ 2 个错误

任何帮助将不胜感激。

【问题讨论】:

    标签: java compilation mapreduce


    【解决方案1】:

    在我看来你的手指背叛了你:

    公共类 Foat ArrayWritable 实现 Writable {

    【讨论】:

    • 这解释了编译器错误,因为构造函数匹配正常的方法签名,当然缺少返回类型。如果构造函数名称与类名称不匹配,则它假定一个方法并期望返回类型。
    【解决方案2】:

    您必须确保类名与构造函数名匹配。

    发生编译器错误是因为构造函数匹配正常的方法签名,当然缺少返回类型。如果构造函数名称与类名称不匹配,则它假定一个方法并期望返回类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-29
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      相关资源
      最近更新 更多