使用 javac 和 java 在其他目录下用 extern classes 执行 class 文件

use javac and java to excute class file with extern classes under other directory

我尝试使用 javac 编译我的 java 文件 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(如果需要)应该在源代码路径名之前
  • class路径不用于查找源文件;用于查找编译文件。

在这种情况下,由于另一个原因,将 class 路径设置为 ./lib 是错误的。目录 lib 实际上对应于 HelloWorld class 的包名。如果 class 路径是 ./lib,那么 javajavac 将在

中查找 HelloWorld.java 的编译版本
   ./lib/lib/HelloWorld.class