繁体   English   中英

使用命令行javac“找不到符号”错误

[英]javac “cannot find symbol” error with command line

我有两个班级Owning和OwningAccessor。 这些文件位于同一目录中。

public class Owning {
    String _name = "";
    public void printBanner()
    {
    }
    public void printOwning(double amount)
    {
        printBanner();

        //print details
        System.out.println("name:" + _name);
        System.out.println("amount:" + amount);
    }
}


public class OwningAccessor {
    public void access()
    {
        Owning o = new Owning();
        o.printOwning(500);
    }
}

当我尝试使用javac -cp . OwningAccessor.java编译OwningAccessorjavac -cp . OwningAccessor.java javac -cp . OwningAccessor.java ,我收到了编译错误。

symbol  : class Owning
location: class smcho.OwningAccessor
        Owning o = new Owning();
        ^
OwningAccessor.java:6: cannot find symbol
symbol  : class Owning
location: class smcho.OwningAccessor
        Owning o = new Owning();
                   ^

这有什么问题? 代码在eclipse IDE下编译得很好。

好的,我们假设您将代码分布在文件中,如下所示

myproject
├── out
└── src
    ├── OwningAccessor.java
    └── Owning.java

转到命令提示符,将目录更改为myproject 一旦发出以下命令:

javac -d out -sourcepath src src/OwningAccessor.java

我只是测试它,它工作得很好。 您编译的类将位于out文件夹中:

.
├── out
│   ├── OwningAccessor.class
│   └── Owning.class
└── src
    ├── OwningAccessor.java
    └── Owning.java

编译一个类将触发所有其他依赖类的编译。 编译器将自动在src文件夹中查找它们。

确保编译Owning.java和OwningAccessor.java,如下所示:

javac -cp . Owning.java OwningAccessor.java

Eclipse为您编译所有必需的文件,这就是为什么在那里工作。

尝试制作正确的源路径示例:

javac -d temp -sourcepath c:\awork\JavaProjects\singleton\src\ c:\JavaProjects\singleton\src\com\company\MySingleton.java

javac -d temp -sourcepath c:\awork\JavaProjects\singleton\src\ c:\JavaProjects\singleton\src\com\company\Main.java

在“temp”中我们分配资源,而-sourcepath指示.java文件在哪里。

因此,在名为D:\\ Automation的目录中,有一个文件Demo.java抛出此错误,当您在D:\\ Automation时,在cmd中,您需要: - 1)cd .. //将从Automation中拉出来目录。 在D:> 2)javac Automation \\ Demo.java

这将编译您的文件 - Demo.java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM