用 javac 编译 java class 不工作

Compiling java class with javac doesn't work

我想像这样编译我的 java class:javac ResultSet.java

但我收到以下错误:

ResultSet.java:5: error: package data does not exist
import data.Spieler;
       ^
ResultSet.java:8: error: cannot find symbol
    private ArrayList<Spieler> meineSpieler = new ArrayList<Spieler>();
                      ^
symbol:   class Spieler
location: class ResultSet
ResultSet.java:12: error: cannot find symbol
    public native Spieler[] getSpieler();
                  ^
symbol:   class Spieler
location: class ResultSet
ResultSet.java:18: error: cannot find symbol
    public ArrayList<Spieler> getMeineSpieler() {
                     ^
symbol:   class Spieler
location: class ResultSet
ResultSet.java:8: error: cannot find symbol
    private ArrayList<Spieler> meineSpieler = new ArrayList<Spieler>();
                                                            ^
symbol:   class Spieler
location: class ResultSet

如何导入 spieler class?我应该设置 classpath 还是有其他方法可以解决这个问题?

往上一个目录然后用

编译
javac data/JNIResultSet.java

更新: 好的,你的 class JNIResultSet 在包 model 中,它使用包 data.

中的其他 classes

那么你的编译命令应该是这样的:

javac -cp . model/JNIResultSet.java

-cp . 部分表示您的 class 路径包含当前目录。这是包层次结构的根。因此编译器可以在包 data 中找到 *.java 文件并根据需要编译它们。

你看,这可能非常复杂。对于更多 classes,这将几乎无法管理。所以你真的应该考虑使用像 Ant、Maven 或 Gradle.

这样的构建系统

在将文件编译为
时使用 -classpath javac -classpath <path-to-dependent-classes> JNIResultSet.java

仅当 Spieler 不在类路径中时才需要!

如需更多帮助,请参阅 javac oracle documentation