【问题标题】:Compiling java class with javac doesn't work用 javac 编译 java 类不起作用
【发布时间】:2016-10-06 10:11:53
【问题描述】:

我想像这样编译我的 java 类: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 类?我应该设置类路径还是有其他方法可以解决这个问题?

【问题讨论】:

  • 看起来是包有问题...检查一下
  • “我应该设置类路径...?” - 确切地说,编译器应该如何知道要导入哪个类(您的系统上可能有多个版本)?除此之外,您可能还需要考虑使用像 Gradle 或 Maven 这样的构建系统来促进这一点。
  • 另外,我建议使用ide,以便不关心您不想关心的事情(例如手动编译时的包)
  • 是的,您需要添加-cp &lt;path-to-package-for-spieler&gt;
  • 所以我应该使用 -cp ?

标签: java compilation javac


【解决方案1】:

上一个目录,然后用它编译

javac data/JNIResultSet.java

更新: 好的,你的类 JNIResultSet 在包 model 中,它使用包 data 中的其他类。

那么你的编译命令应该如下:

javac -cp . model/JNIResultSet.java

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

你看,这可能非常复杂。对于更多的课程,这几乎是无法管理的。所以你真的应该考虑使用像 Ant、Maven 或 Gradle 这样的构建系统。

【讨论】:

  • 但 JNIResultSet 在另一个包中,然后是类 Spieler
  • 好的,Spieler 类在哪个包中?在javac 命令中使用此路径。
  • 我有 2 个包,名为 data,其中 Spieler 类在,model,JNIResultSet 类在
  • 不清楚你所说的 2 个数据包是什么意思,但我更新了我的答案以反映包层次结构。
【解决方案2】:

在将文件编译为
javac -classpath &lt;path-to-dependent-classes&gt; JNIResultSet.java

时使用 -classpath

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

更多帮助请参考javac oracle documentation

【讨论】:

  • 抱歉,我是新手。如果我想编译类JNIResultSet,我的 javac 会是什么样子?我的项目是这样的 -> src -&gt; data package (contains person class) and model package(contains JNIResultSet)
  • src文件夹,运行javac -classpath ./ model/JNIResultSet.java
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 2012-11-10
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多