我正在尝试导入我创建的包,我的文件结构如下:
在我的测试人员中,我使用:import mypackage.Cram;
导入包但当我尝试编译我的tester.java时,我收到以下错误:包mypackage不存在。任何帮助将非常感激。这是错误; algo是我的tester.java和pack是mypackage。
algo.java:6: error: package pack does not exist
import pack.Cram;
^
如果您同时编译所有文件,那么您应该能够按原样使用代码,前提是您已正确定义了类,并且在package
关键字指示的目录结构中。
假设您有以下目录树(如原始帖子中所示):
javacode
Tester.java
mypackage
Cram.java
classes
<.class files will be placed here later>
并定义了以下类:
tester.Java:
import mypackage.Cram;
public class Tester {
public static void main(String[] args) {
Cram c = new Cram();
c.doSomething();
}
}
cram.Java:
package mypackage;
public class Cram {
public void doSomething() {
System.out.println("Hello from Cram!");
}
}
您可以使用以下命令将所有这些文件编译到一个目录中(通常,IDE将编译为“classes”或“bin”目录):
> javac -d classes Tester.java mypackage\Cram.java
这会将所有类文件放在“类”目录中
classes
Tester.class
mypackage
Cram.class
然后您可以使用以下命令运行:
> java -cp classes Tester
并产生输出:
Hello from Cram!
如果您正在将程序包与Tester.java分开编译,就像库一样,那么您可以使用一些单独的命令执行相同的操作。
编译mypackage.Cram
:
> javac -d classes mypackage/Cram.java
这会将.class文件放在相同的classes目录中。当您尝试编译Tester.java(使用mypackage.Cram
)时,您只需告诉编译器您的类在哪里:
> javac -d classes Tester.java
然后运行:
> java -cp classes Tester
产生相同的输出。
我的猜测是,你的类和名称都被破坏了,Java希望它们遵循一个约定。
编译时,它正在寻找.java文件。将Cram.java文件放在那里,然后再次尝试编译。
在Algo.java中更改您的导入。你正在寻找pack.Cram,你已经表明它是mypackage.Cram。