最近我开始使用文本编辑器(text mate)而不是 eclipse 来用 Java 编程。我在文件夹 A(/Users/kevincastro/Documents/Code/estructuras/clases) 中拥有 file1.java,在文件夹 B(/Users/kevincastro/Documents/Code/estructuras/datastructs) 中拥有 file2.java。我想将 file2.java 导入到 file1.java 但它没有字。我已经尝试过:
导入Users.kevincastro.Documents.Code.estructuras.datastructs.*;
导入数据结构。*;
导入 Documents.Code.estructuras.datastructs.*;
它们都不起作用。我收到此错误“包 Users.kevincastro.Documents.Code.estructuras.datastructs 不存在”
有什么帮助吗?谢谢
最佳答案
看来这里有一个严重的误会。您似乎认为 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 的文件夹中 - 但该文件夹可以位于任何位置。
当您编译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
编译 Foo,引用 Bar(已编译为/SomeOtherDir/b/Bar.class):
javac -d/SomeDir/target -classpath/SomeOtherDir/SomeDir/src/a/Foo.java
或者 Bar.class 可能位于 jar 文件等中
当您运行 Foo 时,Bar 必须位于类路径中,以便类加载器可以找到它。如果要运行/SomeDir/a/Foo.class,并且Bar位于/SomeOtherDir/b/Bar.class中:
java -classpath "/SomeDir:/SomeOtherDir"a.Foo
一旦您测试了所有这些,您应该准备好爱上现代构建工具,例如 Maven 或 Gradle,这将使您的生活变得更加轻松。
关于java - 导入java类文本编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694544/