javac";找不到符号“;命令行出错
我有两个班:Owning和OwningAccessor。这些文件位于同一目录中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
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,它将处理所有这些,而且相当简单。