当我将包导入到我的 MyLib
类(需要 -cp
到 javac)时,我无法再编译我的 MyMain
类。
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 覆盖该默认值 - 因此需要将其添加回。
关于javac 添加类路径破坏了我的本地类编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60263246/