javac 添加 classpath 破坏了我的本地 class 编译

javac adding classpath breaks my local class compilation

当我将包导入到我的 MyLib class 时(这需要 -cp 到 javac),我无法再编译我的 MyMain class。

MyMain.java:

class MyMain
{
    public static void main (String [] args)
    {
        MyLib.do_stuff ();
    }
}

MyLib.java:

import com.google.gson.JsonElement;

class MyLib
{
    public static void do_stuff ()
    {
        System.out.println ("Hello.");
    }
}

当我javac MyLib.java我这样做的时候

javac -cp GSON_JAR_PATH MyLib.java

可行,但如果我

javac MyMain.java

我明白了

./MyLib.java:1: error: package com.google.gson does not exist
import com.google.gson.JsonElement;

但是如果我在编译命令中添加-cp

javac -cp GSON_JAR_PATH MyMain.java

我明白了

MyMain.java:5: error: cannot find symbol
                MyLib.do_stuff ();
                ^
  symbol:   variable MyLib
  location: class MyMain

使用“-cp path1:path2” - 冒号分隔。 (分号适用于 windows)(引用 cp 的参数....

javac -cp path1:path2 //or ; for windows.

注 1 - 设置 -cp 覆盖 任何现有的 CLASSPATH 环境或默认 路径设置。

注 2 - 如果没有 CLASSPATH 设置,则默认为“.” - 直到 -cp 覆盖它。

所以在发布的案例中 - “.”为路径(CLASSPATH 或默认值)设置,直到使用 -cp 覆盖默认值 - 因此需要将其添加回去。