2012-02-08 99 views
1

我不知道如何从上面的目录中导入文件。也就是说,我有一个设置像这样如何在Java中包含上述目录中的文件?

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

基本上,Main.java在“MyProject的”和Other.java是该项目的根文件夹内的文件夹中。我可以很容易做到

import Other.*; 

获得在主提供这些文件,但如何让Main.java可见于Other.java?

import ../Main.java 

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

编辑:我的意思是不包括进口。抱歉。一直使用C++太多。

回答

0

Java不包含文件。但是,您可以通过使用import语句直接使用简单名称的类。

基本上你需要你定义每个(顶层)类的文件。这允许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的将创建这些导入语句,你选择了正确的类进口(万一有个教学班,在不同的包中的同名)可能经过。


更多信息可在Java Language Specification (Java 7 version)中找到。

在你的情况下,你已经定义了一个Main类的根或默认包,这是强烈不鼓励。您可以直接参考Main而不需要任何import声明。 Other类是在同名的Other包中(在包名中使用大写字母也非常不鼓励)。您可以使用import Other.Other来引用它。

+1

虽然您所说的内容没有任何技术上的错误,但您实际上并没有真正回答“如何在Java中包含上述目录中的文件?”这个问题。 – 2013-10-01 03:37:08

+0

@MatthewG好的,重写了答案,谢谢你的抬头 – 2013-10-01 18:56:53

0

,如果你有文件的项目之外这意味着该文件:

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

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

要么将​​其移动到项目,或包括含有该文件相关的项目。

Java不像C++。你通过包名称来包含。因此,如果顶层文件位于src/aaa文件夹中的项目AAA中,那么您应该将该项目作为相关jar包含,并将文件称为import aaa.Main

+1

它在项目中。主文件位于项目的“根”目录中,“其他”是主根目录内的文件夹 - 即Main.java旁边的“其他”文件夹。我想将Main.java(在根文件夹中)导入到Other.java(在“其他”文件夹内)。 – Sefu 2012-02-08 22:50:52

1

包括???

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

您应该定义一个包为您的主类,然后在其他类导入。

+0

是的,我的意思是进口,很明显。我会试着制作软件包,看看我能否以这种方式实现它。 – Sefu 2012-02-08 22:53:05

1

的Main.java在默认的包,这是不可能从其他(命名)封装

把它放在一个包,并导入正常导入

directory: MyProject 
    directory: base 
     Main.java 
    directory: other 
     Other.java 

(也包名小写通常)

0

我认为import Main;应该只是工作。

您应该阅读java概念类路径。请看文档here。将为您工作的选项是源路径类路径

相关问题