我不确定如何从上面的目录导入文件。也就是说,我有一个像这样的设置
directory: MyProject
Main.java
directory: Other
Other.java
基本上,Main.java位于“MyProject”中,而Other.java位于项目根文件夹内的文件夹中。我很容易做到
import Other.*;
在Main中获取这些文件,但如何让Main.java对Other.java可见?
import ../Main.java
显然这不起作用,但这是我正在寻找的一般功能。有什么建议?我宁愿不必使用绝对路径。谢谢!
编辑:我的意思是导入不包括。抱歉。过分使用C ++。
答案 0 :(得分:1)
答案 1 :(得分:1)
Main.java位于默认包中,无法从其他(命名)包
导入将其放入包中并正常导入
directory: MyProject
directory: base
Main.java
directory: other
Other.java
(包名也通常是小写的)
答案 2 :(得分:1)
Java不包含文件。但是,您可以使用import
语句直接使用 simple 名称来使用类。
基本上你需要一个你定义的每个(顶级)类的文件。这允许IDE重命名编译单元,并进行其他重构。除此之外,它还可以让您轻松地在正确的位置添加代码。
Java确实使用包来创建名称空间。包本身是完全独立的命名空间。尽管命名空间似乎是树结构,但在Java中,每个包实际上与任何其他包都没有关系。因此,您不能将其用作文件夹结构,不允许使用..
。一旦引入“超级套餐”,这可能会改变。
Java import
语句看起来很像#include
,但名称更改是故意的:不是抓取文件使该文件中的定义已知,它只是一个声明来实现它更容易引用类和接口。除了对类(或import static
,常量和其他static
成员)使用较短的名称之外没有其他影响。
大多数情况下,使用反映包名称的文件夹结构来表示顶级类。这使IDE和开发人员可以轻松找到代表该类的文件。它还可以轻松实现版本控制。但它不是Java规范本身的一部分; Java源和类的位置未定义。早期的IBM IDE实际上将Java源代码和类存储在数据库中;他们根本没有使用文件。较新的IDE(如Eclipse)可能使用不同的源文件夹,例如一个用于单元测试文件,另一个用于库本身。
最后,包含软件包的唯一方法是指定完整软件包名称,然后指定一个点,然后指定要导入的类,或者*
通配符以导入所有类那个包裹。
import java.util.Vector;
import java.util.*;
大多数IDE都会为您创建这些import语句,可能是在您选择了正确的类导入之后(如果在不同的包中有相同名称的类)。
更多信息可在Java Language Specification (Java 7 version)。
中找到在您的情况下,您已在根目录或默认包中定义了Main
类,强烈建议不要这样做。您可以在没有任何Main
声明的情况下直接引用import
。 Other
类位于同名的Other
包中(强烈建议不要在包名中使用大写)。您可以使用import Other.Other
来引用它。
答案 3 :(得分:0)
如果您的项目之外有文件,则表示此文件:
所以你真的不应该包括它。
将其移动到项目中,或者包含包含该文件的依赖项目。
Java与C ++不同。您按包名称包含。因此,如果顶层文件位于文件夹src / aaa中的项目AAA中,那么您应该将该项目包含为依赖jar并将文件引用为import aaa.Main
答案 4 :(得分:0)
我认为import Main;
应该可行。
您应该阅读java概念包和类路径。请查看文档here。适用于您的选项是 sourcepath 和 classpath 。