如何从包外导入文件?
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
如何从包外导入文件? 示例:
// 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