如果您同时编译所有文件,那么您应该能够按原样使用您的代码,前提是您正确定义了您的类并且在您的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”目录中
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 期望它们遵循约定。