使用javac和java在其他目录下执行带有外部类的类文件
我尝试使用javac编译我的javafile使用javac和java在其他目录下执行带有外部类的类文件,java,javac,Java,Javac,我尝试使用javac编译我的javafilejavac Main.java-cp./lib HelloWorld.java,我得到了这个javac:file not found:HelloWorld.java 这是我的java源文件: 下的Main.java/ import lib.*; public class Main { public static void main (String []args) { H
javac Main.java-cp./lib HelloWorld.java
,我得到了这个javac:file not found:HelloWorld.java
这是我的java源文件:
下的Main.java/
import lib.*;
public class Main
{
public static void main (String []args)
{
HelloWorld hw = new HelloWorld ();
System.out.println (hw.getMsg ());
}
}
和./lib下的HelloWorld.java
package lib;
public class HelloWorld
{
public String getMsg ()
{
return "HelloWorld!";
}
}
任何帮助都将不胜感激 您的命令应该是
javac Main.java lib/HelloWorld.java
您的尝试失败有以下几个原因:
(如果需要)应位于源代码路径名之前-cp lib
- 类路径不用于查找源文件;它用于查找已编译的文件
/lib
是错误的,原因还有另一个。目录lib
实际上对应于HelloWorld
类的包名。如果类路径是/lib
,那么java
和javac
将在中查找HelloWorld.java
的编译版本
./lib/lib/HelloWorld.class
是的,您要求它编译
HelloWorld.java
,而不是lib/HelloWorld.java
。文件HelloWorld.java
(相对于当前工作目录)不存在…请使用指定的正确路径:/lib/HelloWorld.java
不带空格谢谢大家!我终于执行了主课。非常感谢!我误解了-cp
的意思。谢谢你的时间和耐心!!为了澄清第二个要点(完全正确),它用于查找代码导入的编译文件,编译器需要查看这些文件以确保正确使用API。我可能说得很糟糕,但你明白了。