找不到自己的类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。例如,如果我有另一个使用classTask
的classC
,我如何(在一般情况下理想地)将其添加到我的makefile中?请参考以下内容:。它有一些关于依赖性的细节。只是想澄清一下,如果有人以后搜索这个。这太复杂了,无法轻松完成,我们将项目转移到了maventhis!我尝试使用以下工具手动编译:javac-cp webapps/ROOT/WEB-INF/lib src/crowdtrust/BinaryTask.java src/crowdtrust/Task.java
,它可以工作。但是,我不确定如何为具有许多依赖项的许多类编写makefile。例如,如果我有另一个使用classTask
的classC
,我如何(在一般情况下理想地)将其添加到我的makefile中?请参考以下内容:。它有一些关于依赖性的细节。只是想澄清一下,如果有人以后搜索这个。这太复杂了,很难轻松完成,我们将项目转移到了maven
SOURCES = Task.java SubTask.java BinaryTask.java
BinaryTask.class: Task.class SubTask.class