2014-09-05 160 views
0

最近我开始使用文本编辑器(文本队友)而不是eclipse来用Java编程。我在文件夹B(/ Users/kevincastro/Documents/Code/estructuras/datastructures)中的文件夹A(/ Users/kevincastro/Documents/Code/estructuras/clases)和file2.java中创建了file1.java。我想将file2.java导入到file1.java中,但它没有提供。我已经试过:导入java类文本编辑器

import Users.kevincastro.Documents.Code.estructuras.datastructures.*; import datastructures.*; import Documents.Code.estructuras.datastructures.*;

他们没有工作。我得到这个错误“包Users.kevincastro.Documents.Code.estructuras.datastructures不存在”

任何帮助吗?谢谢

+0

你编译过file2吗?当您尝试构建file1时,是否提供了对file2.class的类路径引用? – MadProgrammer 2014-09-05 22:02:36

+0

我试过了,仍然不起作用。而不是导入该文件我想导入hole文件夹,因为它包含的mora不是我正在使用的一个file.java – Kevjumba94 2014-09-05 22:06:33

+0

您可能需要考虑使用构建工具,如ant – MadProgrammer 2014-09-05 22:14:23

回答

0

看起来这里有一个严重的误解。你似乎认为import声明实际上是“导入文件”或类似的东西。它没有做任何事情。 import语句只存在,以便您不必在每次使用它时编写完全限定名称的类。看看下面的代码:

package a 
import b.Bar 

public class Foo { 
    private Bar bar = new Bar(); 
    public static void main(String [] args) { 
     System.out.println(bar); 
    } 
} 

这是完全一样的文字:

package a 

public class Foo { 
    private b.Bar bar = new b.Bar(); 
    public static void main(String [] args) { 
     System.out.println(bar); 
    } 
} 

但它并没有说太多关于那里b.Bar所在的文件的位置!因此,在文本编辑器或源代码中没有要导入的文件。你唯一知道的是b.Bar必须位于名为b的文件夹中 - 但该文件夹可以在任何地方。

  1. 当你编译a.Foo,javac的(编译器),同时必须要么编译b.Bar,或者在类路径访问b.Bar。假设您的源代码位于/SomeDir/src/a/Foo.java和/SomeDir/src/b/Bar.java中,并且您编译为/ SomeDir/target。例子:

    • 一次编译这两个类(事实上,在/ SomeDir/src目录的所有Java源文件):javac -d /SomeDir/target /SomeDir/src/**/*.java

    • 编译美孚,引用酒吧(已编译/ SomeOtherDir/B /酒吧的.class):javac -d /SomeDir/target -classpath /SomeOtherDir /SomeDir/src/a/Foo.java

    • 或者Bar.class可能是一个jar文件,等

  2. 当你运行Foo,Bar必须位于类路径中,以便它可以由类加载器找到。如果你想运行/SomeDir/a/Foo.class,而Bar在/SomeOtherDir/b/Bar.class中:java -classpath "/SomeDir:/SomeOtherDir" a.Foo

  3. 一旦你测试了所有这些,你应该准备好爱上现代构建Maven或Gradle等工具,这将使您的生活变得更加轻松。