我认为我是新手,但是当我在一个单独的文件中创建一个对象时,它只会编译该类在同一目录中定义,或者是否从库中导入它。我假设它使用类路径来搜索包含的类文件,但是当我将一个随机目录添加到类路径(并且只将那个文件放在那里)时,它仍然抱怨该类未定义且不会编译。在编译时查找类知道在哪里?
实施例
public class SomeClass {
public SomeOtherClass SoC; // If this class is not in library or same directory -- won't compile.
}
答案 0 :(得分:0)
// If this class is not in library or same directory -- won't compile
正确。您的类需要位于类路径中,或者位于您指定的.jar
中。
编译时,您将使用
javac -classpath .:/some/other:/another:/some/foo.jar
然后{。{1}} .java文件(您的代码)中需要的任何内容
答案 1 :(得分:0)
除了导入之外,你还必须在类路径上有代表类'package。
的文件夹示例:
班级com.whatever.SomeClass
位于src/java/com/whatever/SomeClass.class
。
现在,类路径应包含src/java/
,然后从中查找包com.whatever
。
如果类在.jar文件中,则将jar放在类路径中。在.jar里面你再次拥有com/whatever/SomeClass.class
(注意.jar基本上是一种类似zip的格式)。