我正在尝试导入我创建的包,我的文件结构如下:
java代码
- 测试器.java
我的包
- 补习类
在我的测试器中,我使用以下方式导入包: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>
并定义了以下类:
测试器.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”目录中
classes
Tester.class
mypackage
Cram.class
然后您可以使用以下命令运行:
> java -cp classes Tester
并产生输出:
Hello from Cram!
如果您像库一样与 Tester.java 分开编译包,那么您可以做同样的事情,只需使用一些单独的命令。
编译mypackage.Cram
:
> javac -d classes mypackage/Cram.java
这会将 .class 文件放在同一类目录中。当您尝试编译 Tester.java(使用 mypackage.Cram
)时,您只需告诉编译器您的类在哪里:
> javac -d classes Tester.java
然后运行:
> java -cp classes Tester
产生相同的输出。
我的猜测是,你的类和名称都被破坏了,Java 希望它们遵循约定。
关于java - java报错包不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30656319/