如何从包外导入文件?

How can I import file from outside of package?

如何从包外导入文件? 示例:

// this is a.java
package user.code.gui;
void method_a(){
    // do something
}

// this is b.java
package user.code;
void method_b(){
    // do something
}

// this is c.java
package user.extensions;
void method_c(){
    // do something
}

如果我在文件 a.java 中使用“import c”,它找不到这个文件,因为它在不同的包中。问题是,如何将文件 c.java 导入文件 a.java?

您需要在编译期间以及运行时存在其他包;这些是不同的东西,但它们都有类路径的概念。

Java 总是通过将类型名称转换为目录名称来查找内容;在 /a/b/Foo.class.

中查找 package a.b; class Foo {}

它扫描类路径中的每个条目。类路径条目可以是目录或 jar 文件。

构建系统(maven、gradle 等)和 IDE(eclipse、intellij 等)- 使它易于配置,并且通常会为您处理。你应该使用这些工具;所有 java 项目中的 99% 都是由 IDE and/or 构建工具编译的。

一旦您开始拥有多个包,javac 就会变得笨拙。

但是,如果您必须为此使用命令行:

您的目录结构:

/Users/Cflowe/workspace/MyAwesomeProject/src/user/code/gui/GuiClass.java
/Users/Cflowe/workspace/MyAwesomeProject/src/user/code/Whatever.java

等等。编译:

cd /Users/Cflowe/workspace/MyAwesomeProject
mkdir bin
javac -sourcepath src -d bin src/user/code/Whatever.java src/user/code/gui/GuiClass.java andSpecifyEveryOtherFileByHandHere

java -cp bin com.foo.Main