gpt4 book ai didi

java - 具有 Jar 和包依赖项的 Makefile

转载 作者:搜寻专家 更新时间:2023-11-01 01:57:25 25 4
gpt4 key购买 nike

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

我尝试了网络上的大量示例,但都提示它们缺少依赖项。其他人建议使用 Ant 或 Mavern,但这是不可能的,确切的提交通知是:

Quoted from Specification

Your submission should consist of a single file comp2010.tar suitable for use on a Linux system. This must contain a file Makefile, and all sources. You should not hand in any .class files. Your Makefile must build the tool from the Java sources. The main class must be called Blaise. In short, the (automatic) testing process will consist of:

tar xf comp2010.tar

make

java Blaise < test.file > testout 2>
testerr

These commands will be executed in an empty directory in a standard departmental teaching Linux environment with Java 1.6. The CLASSPATH will include the ANTLR jar, version 3.2.

NOTE: Please ensure that your submission can be compiled and executed on standard departmental machines. Please make sure that you use the right version of Java, and that you do not use absolute paths. If you use any external libraries, you need to submit these as well.

所以你看我不能设置任何环境变量,因为运行它的机器不是我的,我没有管理权限。我不能提交任何类文件,所以 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 个小时来解决其中一个问题。如果您能提供任何帮助,我们将不胜感激。

亲切的问候费尔多

最佳答案

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

  • 如前所述,您需要在 tar 文件根目录的默认包中设置 Blaise 类
  • 您使用的任何包也应该直接存在于根目录下,而不是源代码子目录中(因为 Java/Javac 无法在那里找到它们)
  • make 是特定于您使用空格和制表符的地方
  • 您的 makefile 不使用 javac 命令的选项
  • 您尝试为哪个版本的 make 构建 makefile?我知道的版本会采用如下格式:

    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 - 具有 Jar 和包依赖项的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5487838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com