我整天都在努力使这个东西正常工作。基本上,我需要创建一个makefile以从源代码构建我的项目。我对Linux有点了解,但是对Linux却了解不多,我是一个完整的makefile新手。

我从网上尝试了许多示例,但所有人都抱怨它们缺少依赖项。其他人建议使用Ant或Mavern,但这不可能实现确切的提示通知:

引自规范

您提交的内容应包括

单个文件comp2010.tar适用于

在Linux系统上使用。这必须

包含一个文件Makefile,以及所有

资料来源。你不应该交

.class文件。您的Makefile必须建立

该工具来自Java来源。的

主班必须叫布莱斯(Blaise)。在

简而言之,(自动)测试过程

将包括:

tar xf comp2010.tar

make

java Blaise < test.file > testout 2>

testerr

这些命令将在

标准中的空目录

部门教学Linux

Java 1.6的环境。的

CLASSPATH将包含ANTLR jar,

版本3.2。

注意:请确保您的

提交可以被编译和

在标准部门执行

机器。请确保您

使用正确的Java版本,以及

您不使用绝对路径。如果

您使用任何外部库,

也需要提交这些。

因此,您看到我无法设置任何环境变量,因为运行它的机器不是我的机器,并且不允许我进行管理访问。我无法交出任何类文件,因此makefile不适合我,Ant / Mavern脚本将无法工作,因为测试过程是自动执行的,并且使用此makefile,而我只能交出.java文件。因此,我需要构建一个makefile,无法解决这个问题。

源结构如下:

src \ Package1 * .java

src \ Package2 * .java

自动生成\ PackageA * .java

编译该东西所需的所有3个文件夹中都有源文件。 Main()方法位于src \ Package1 \ 1.java中

这些目录中的每一个都是Eclipse中的一个程序包,这3个程序包相互依赖以及一个外部Jar文件antlr-3.2.jar

那么我如何制作这个makefile。这是我的问题,我在下面提供了自己的尝试:

JAVAC = javac

CLASS_FILES = src/package1/1.class auto-generated/packageA/2.class auto-generated/packageA/3.class auto-generated/packageA/4.class src/Package2/5.class src/Package2/6.class src/Package2/7.class src/Package2/8.class src/Package2/9.class src/Package2/10.class src/Package2/11.class src/Package2/12.class antlr-3.2.jar.*

Default: $(CLASS_FILES)

%.class: %.java

$(JAVAC) $<

clean: $(RM) *.class

此操作失败,并出现诸如“org.antlr.runtime不存在”之类的错误,该错误位于antlr-3.2.jar中。我机智,需要尽快上交。我认为我只是错误地导入了jar,也许我需要使用任何CLASSPATH。对不起,如果这是一个简单的问题,但我现在已经尝试了6个小时,以便使其中一个成为可能。您能提供的任何帮助将不胜感激。

亲切的问候

费尔多

参考方案

我可以在这里看到一些问题:

如所描述的

,您需要在tar文件

的根目录中的默认包中设置Blaise类

您使用的任何软件包都应直接存在于根目录下,而不是源子目录中(因为Java / Javac将无法在其中找到它们)

make是使用空格和制表符

的特定WRT

您的makefile不使用javac命令

的选项

您要为哪个版本的make构建文件?我知道的版本将采用以下格式:

JAVAC = javac

JAVACFLAGS =

SRC= Blaise.java \

package1/1.java \

packageA/2.java

CLS= $(SRC:.java=.class)

all: $(CLS)

.SUFFIXES : .class .java

.java.class :

$(JAVAC) $(JAVACFLAGS) $<

Java:静态字段在内存中的哪个位置? - java

如果我们将对象存储在对象的静态字段中,那么JVM如何为它分配内存?它是否存在于“隐式”(不确定我是否使用正确的单词)类对象中?静态字段与对象字段有何不同? 参考方案 静态字段是类变量,并且在该类的所有实例之间共享。实例变量(或我认为您引用它们的对象字段)属于类的各个实例,并且不共享。至于它们存储在内存中的位置将根据JVM的实现而定,因此没有理由需要两个不同的…Java-非泛型类扩展了泛型类 - java

我想知道如何(如果可能)创建一个类,它是泛型类的特定类型。具体来说,我有一个实现所有必需方法的abstract class Stack,我想有一个class StackInteger,而StackInteger的实例也是Stack的实例。我看到我可以做这样的事情:class StackInteger { …Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐