【问题标题】:Java compilation error cannot find symbol of interfaceJava编译错误找不到接口符号
【发布时间】:2013-10-04 21:31:25
【问题描述】:

我正在尝试在我的 java 代码中实现一个接口:

package PJ1;

public class Fraction implements FractionInterface, Comparable<Fraction>{

现在,FractionInterface.class 与 Fraction.java 文件在同一目录下,它也在 PJ1 包中:

package PJ1;

public interface FractionInterface{

然而,当我尝试编译 Fraction.java 文件时,出现以下错误:

D:\CSC220\PJ1\Fraction.java:36: error: cannot find symbol
public class Fraction implements FractionInterface, Comparable<Fraction>
                                 ^

我很难过,因为我所有的相关文件都在同一个目录中,我试图将我的所有类文件放在同一个包中。有什么想法吗?

【问题讨论】:

  • 正如你所说的文件在同一个目录中 - 然后检查拼写错误
  • 我查了,没有拼写错误。不过还是谢谢。
  • 第 36 行的错误点,你能再显示一些代码吗?
  • 这里是第36行,同上public class Fraction implements FractionInterface, Comparable&lt;Fraction&gt;{

标签: java class inheritance interface compiler-errors


【解决方案1】:

我的猜测是文件不在名为PJ1 的目录中,相对于编译器期望它们的位置。创建文件夹并将两个文件移动到该位置。为了更清楚一点,假设您的文件夹结构如下所示

myfolder
 +-PJ1
    Fraction.java
    FractionInterface.java

那么你需要使用 myfolder 编译

javac PJ1\Fraction.java

【讨论】:

  • 你是从文件夹PJ1编译吗?
  • 等等,我认为这行得通!我去了上面的一个目录并使用了上面列出的命令。原来我还有其他错误,所以编译失败,但我认为它现在可以看到界面。谢谢!
【解决方案2】:

尝试像这样编译:

例如在 c 中:您确实有两个 java 文件 - Fraction.java 和 FractionInterface.java ,并且您还没有为包创建任何文件夹,然后尝试:

c:> javac -d . *.java

这将编译所有文件并创建所需的包。您无需手动为包创建任何文件夹。

如果您已经为包创建了文件夹,并且您已经在包中,请说:

c:\PJ1,你可以简单地使用 javac 编译为:

c:\PJ1> javac *.java

希望这会奏效。

【讨论】:

  • 谢谢,我让它工作了(见上文)。虽然我并不完全清楚为什么会这样..
  • 好的。但我想让你知道,你也可以使用带有 -d 选项的 javac 来自动创建包。它将减少手动创建包的负担。任何为什么它起作用...您有什么疑问/困惑?
【解决方案3】:

确保这两个文件都在 PJ1 文件夹中并运行 javac *.java

【讨论】:

    【解决方案4】:

    只需转到文件所在目录上方的目录并从那里编译您的 java 文件(以便您可以查看它们是否正确编译),例如

    javac dir1\file.java.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2013-12-06
      • 2012-08-27
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多