找不到自己的类Java的符号

找不到自己的类Java的符号,java,Java,我意识到以前有人问过很多这个问题,但我无法从这些答案中找出问题所在 我有一个抽象类任务: package crowdtrust; public abstract class Task { public enum Type { BinaryImageClassification; }; public abstract void assignCrowd(); }; 执行任务: package crowdtrust; import java.util.Collecti

我意识到以前有人问过很多这个问题,但我无法从这些答案中找出问题所在

我有一个抽象类任务:

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 
  }

};
这些都在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) $<
CONTEXT=webapps/ROOT
SRCDIR=src
CLASSDIR=$(上下文)/WEB-INF/classes
LIBDIR=$(上下文)/WEB-INF/lib
JAVAC=JAVAC
SOURCES=$(通配符$(SRCDIR)/crowdtrust/*.java)
CLASSES=$(来源:.java=.class)
所有:安装干净
清洁:
rm-f$(类别)
安装:$(类)
安装-m600$(类)$(类目录)/crowdtrust
%.class:%.java
$(JAVAC)-cp$(LIBDIR)$<
获取以下(以及更多类似)错误:

javac-cp webapps/ROOT/WEB-INF/lib src/crowdtrust/BinaryTask.java
src/crowdtrust/BinaryTask.java:6:找不到符号
符号:课堂任务
公共类二进制任务扩展任务
^
src/crowdtrust/BinaryTask.java:9:找不到符号
符号:类子任务
位置:类crowdtrust.BinaryTask
私有列表子任务;
^

知道是什么导致了错误吗?

我认为它没有正确地找到依赖项,而且
BinaryTask
是在
Task
之前编译的。要解决此问题,请在make文件中定义显式依赖项,如下所示:

  SOURCES = Task.java SubTask.java BinaryTask.java
  BinaryTask.class: Task.class SubTask.class

我认为它没有正确地找到依赖项,
BinaryTask
是在
Task
之前编译的。要解决此问题,请在make文件中定义显式依赖项,如下所示:

  SOURCES = Task.java SubTask.java BinaryTask.java
  BinaryTask.class: Task.class SubTask.class

不确定为什么要使用
使
。我更喜欢
maven
问题在于,您试图编译的类不在类路径中,也无法使用包从当前工作目录中找到它们。此外,Java中的类不会以分号结尾<代码>Java!=C++
我添加了修改过的makefile以使用:LIBDIR=$(CONTEXT)/WEB-INF/lib:$(SRCDIR)/crowdtrust,但仍然存在相同的错误?请尝试将LIBDIR设置为$(上下文)/WEB-INF/lib用于WINTEL。如果在Unix/Linux上最终移动到Maven,请使用冒号。不知道为什么要使用
make
。我更喜欢
maven
问题在于,您试图编译的类不在类路径中,也无法使用包从当前工作目录中找到它们。此外,Java中的类不会以分号结尾<代码>Java!=C++
我添加了修改过的makefile以使用:LIBDIR=$(CONTEXT)/WEB-INF/lib:$(SRCDIR)/crowdtrust,但仍然存在相同的错误?请尝试将LIBDIR设置为$(上下文)/WEB-INF/lib用于WINTEL。如果在Unix/LinuxEnd上移动到maventhis,请使用冒号!我尝试使用以下工具手动编译:
javac-cp webapps/ROOT/WEB-INF/lib src/crowdtrust/BinaryTask.java src/crowdtrust/Task.java
,它可以工作。但是,我不确定如何为具有许多依赖项的许多类编写makefile。例如,如果我有另一个使用class
Task
的class
C
,我如何(在一般情况下理想地)将其添加到我的makefile中?请参考以下内容:。它有一些关于依赖性的细节。只是想澄清一下,如果有人以后搜索这个。这太复杂了,无法轻松完成,我们将项目转移到了maventhis!我尝试使用以下工具手动编译:
javac-cp webapps/ROOT/WEB-INF/lib src/crowdtrust/BinaryTask.java src/crowdtrust/Task.java
,它可以工作。但是,我不确定如何为具有许多依赖项的许多类编写makefile。例如,如果我有另一个使用class
Task
的class
C
,我如何(在一般情况下理想地)将其添加到我的makefile中?请参考以下内容:。它有一些关于依赖性的细节。只是想澄清一下,如果有人以后搜索这个。这太复杂了,很难轻松完成,我们将项目转移到了maven
  SOURCES = Task.java SubTask.java BinaryTask.java
  BinaryTask.class: Task.class SubTask.class