javac";找不到符号“;命令行出错

javac";找不到符号“;命令行出错,java,javac,Java,Javac,我有两个班:Owning和OwningAccessor。这些文件位于同一目录中 public class Owning { String _name = ""; public void printBanner() { } public void printOwning(double amount) { printBanner(); //print details System.out.println

我有两个班: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
时。拥有Accessor.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下可以很好地编译。

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

javac-cp。Owning.java OwningAccessor.java


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

好的,让我们假设您将代码分发到以下文件中

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
文件夹中查找它们。

尝试生成正确的源路径示例:

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 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抛出此错误,在cmd中,当您在D:\Automation中时,您需要:- 1) cd//将把您从自动化目录中拉出。 在D:>2)javac Automation\Demo.java中


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

它们是否在同一目录中?显示源路径目录结构它们位于同一目录中。无复制,在此处工作。如果你首先编译
Owning.java
,它能工作吗?你不需要在那里的某个地方有一个
这个
。@Daniel:不,即使我编译Owning.java来获取类文件,它也不能工作。java难道不能自己找出依赖项吗?如果你在编译器中使用
-sourcepath
标志,它就可以了,不幸的是,我无法测试它,因为我的机器上的javac在我试图编译的任何东西上都会崩溃,并且存在访问权限冲突…@Kninnug:-sourcepath不起作用。我不明白为什么一次编译所有的源代码而一个一个编译不起作用。好吧,就像我说的,我现在不能测试它(除了在Eclipse中,这是我们不想要的)。但显然javac本身并不寻找必要的文件。您还可以输入
javac-cp.*。java
应该编译该目录中的所有.java文件。这只是程序的一部分,我想知道为什么我不能在CMD中获得systme.out.print的输出?最好的方法是创建一个jar,它将处理所有这些,而且相当简单。