如何在Java中包含上面目录中的文件?

时间:2012-02-08 22:44:24

标签: java import path package

我不确定如何从上面的目录导入文件。也就是说,我有一个像这样的设置

directory: MyProject
    Main.java
    directory: Other
        Other.java

基本上,Main.java位于“MyProject”中,而Other.java位于项目根文件夹内的文件夹中。我很容易做到

import Other.*;

在Main中获取这些文件,但如何让Main.java对Other.java可见?

import ../Main.java

显然这不起作用,但这是我正在寻找的一般功能。有什么建议?我宁愿不必使用绝对路径。谢谢!

编辑:我的意思是导入不包括。抱歉。过分使用C ++。

5 个答案:

答案 0 :(得分:1)

包括???

Java没有文件源包含支持,而是使用命名转换,因此您应该import源文件中需要的命名空间(package)。

您应该为主类定义一个包,然后在Other类中导入它。

答案 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声明的情况下直接引用importOther类位于同名的Other包中(强烈建议不要在包名中使用大写)。您可以使用import Other.Other来引用它。

答案 3 :(得分:0)

如果您的项目之外有文件,则表示此文件:

  • 不会被项目
  • 编译
  • 不会进入jar
  • 不能在运行时使用

所以你真的不应该包括它。

将其移动到项目中,或者包含包含该文件的依赖项目。

Java与C ++不同。您按包名称包含。因此,如果顶层文件位于文件夹src / aaa中的项目AAA中,那么您应该将该项目包含为依赖jar并将文件引用为import aaa.Main

答案 4 :(得分:0)

我认为import Main;应该可行。

您应该阅读java概念类路径。请查看文档here。适用于您的选项是 sourcepath classpath