2

私はこれが以前にたくさん尋ねられたことを理解しますが、それらの答えから問題を理解することができませんでした。

私は抽象クラスのタスクを持っています:

package crowdtrust;

public abstract class Task
{

  public enum Type
  {
    BinaryImageClassification;
  };

  public abstract void assignCrowd();
};

実装タスク:

package crowdtrust;

import java.util.Collection;
import java.util.List;

public class BinaryTask extends Task
{

  private List<SubTask> subtasks;

  public BinaryTask(String name, String question)
  {
    super();
    this.name = name;
    this.question = question;
  }

  public boolean assignSubtask(SubTask s)
  {
      return subtasks.add(s);
  }

  public void assignCrowd()
  {
    //TODO 
  }

};

およびサブタスククラス:

package crowdtrust;
public class SubTask {
  //not important
}

これらはすべてct/src/crowdtrustにあります

ctから私はこのmakefileを実行します:

CONTEXT   = webapps/ROOT
SRCDIR    = src

CLASSDIR  = $(CONTEXT)/WEB-INF/classes
LIBDIR    = $(CONTEXT)/WEB-INF/lib

JAVAC     = javac

SOURCES   = $(wildcard $(SRCDIR)/crowdtrust/*.java)
CLASSES   = $(SOURCES:.java=.class)

all: install clean

clean:
    rm -f $(CLASSES)

install: $(CLASSES)
    install -m600 $(CLASSES) $(CLASSDIR)/crowdtrust

%.class: %.java
    $(JAVAC) -cp $(LIBDIR) $<

これらの(およびより類似した)エラーの取得:

javac -cp webapps/ROOT/WEB-INF/lib src/crowdtrust/BinaryTask.java
src/crowdtrust/BinaryTask.java:6: cannot find symbol
symbol: class Task
public class BinaryTask extends Task
                                ^
src/crowdtrust/BinaryTask.java:9: cannot find symbol
symbol  : class SubTask
location: class crowdtrust.BinaryTask
  private List<SubTask> subtasks;
               ^

エラーの原因は何ですか?

4

1 に答える 1

4

依存関係が適切に検出されておらず、BinaryTask以前にコンパイルされていると思いますTask。解決するには、makeファイルで明示的な依存関係を次のように定義してください。

  SOURCES = Task.java SubTask.java BinaryTask.java
  BinaryTask.class: Task.class SubTask.class
于 2012-11-14T17:06:12.247 に答える