gpt4 book ai didi

javac - 未找到父类(super class)

转载 作者:行者123 更新时间:2023-12-01 15:50:59 25 4
gpt4 key购买 nike

我正在尝试在 Unix(具体来说是 Solaris)中编译一个 Java 项目(Lisp 解释器)。我的问题是,我有一些扩展其他类的类,但是当 javac 尝试编译扩展类时,它说找不到父类(super class)。

我输入的命令:

javac -g LispObject.java
javac -g Sexp.java

第一个工作正常;但第二个因以下错误而停止:

Sexp.java:7: Superclass interpreter.LispObject of class interpreter.Sexp not found.
public class Sexp extends LispObject
^
1 error

(我不知道它是否非常相关,但这是一个类项目,所以我必须使用 makefile 进行编译,所以我不能使用任何 IDE 进行编译...这很糟糕,因为一切正常在 NetBeans 中很好。)

LispObject.java 的代码:

package interpreter;

public class LispObject extends java.lang.Object
{
// empty
}

Sexp.java 的代码:

package interpreter;

public class Sexp extends LispObject
{
// body stuff goes here
}

最佳答案

尝试将 -cp . 添加到您的 javac 调用中,以便它在当前目录中搜索已编译的类。第二次调用是:

javac -cp . -g Sexp.java

或者,一次性提供所有 .java 文件:

javac -g LispObject.java Sexp.java

通常最好是设置一个特定的构建目录(我将其称为/some/dir/build)并使用:

javac -cp /some/dir/build -d /some/dir/build your_file.java

这样 .class 文件就不会污染您的源文件目录。

请记住,您应该使目录结构与包层次结构保持同步。如果您的类位于 interpreter 包中,则应将它们放置在具有该名称的目录中。

因此,在这个特定实例中,您的编译命令应如下所示:

javac -cp /some/dir/build -d /some/dir/build interpreter/LispObject.java
javac -cp /some/dir/build -d /some/dir/build interpreter/Sexp.java

关于javac - 未找到父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047685/

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