我一整天都在尝试让这个东西工作。基本上,我需要创建一个makefile来从源代码构建我的项目。我对Linux有一点了解,但不多,而且我是完全的makefile新手。
我尝试了来自互联网各地的大量示例,所有这些示例都抱怨缺少依赖项。其他人建议使用Ant或Mavern,但这不可能,因为精确的提交通知如下:
引用自规范
您的提交应包括一个适用于Linux系统的单个文件comp2010.tar。这必须包含一个名为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 auto-generated\PackageA*.java
所有3个文件夹中都有源文件需要进行编译。Main()方法在src\Package1\1.java中。
每个目录都是Eclipse中的一个包,并且这3个包彼此依赖,以及外部Jar文件antlr-3.2.jar。
那么,我该如何制作这个makefile呢?这就是我的问题,我提供了自己的尝试:
我尝试了来自互联网各地的大量示例,所有这些示例都抱怨缺少依赖项。其他人建议使用Ant或Mavern,但这不可能,因为精确的提交通知如下:
引用自规范
您的提交应包括一个适用于Linux系统的单个文件comp2010.tar。这必须包含一个名为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 auto-generated\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 does not exist",这是在antlr-3.2.jar中的。我已经尝试了很多方法但都失败了,需要尽快解决。我猜测我导入jar包的方式不正确,可能需要使用CLASSPATH。如果这是一个简单的问题,那么请原谅我的无知,因为我已经连续努力了6个小时来解决这个问题。如果你能提供任何帮助,我将不胜感激。
此致 Feldoh