【问题标题】:Why can't I compile my java file on cygwin, when it needs classes from a jar?为什么我不能在 cygwin 上编译我的 java 文件,当它需要来自 jar 的类时?
【发布时间】:2009-10-04 22:55:18
【问题描述】:

我正在尝试编译我的类以及提供的 .jar 文件,其中包含我的类将使用的类。

这是我一直在尝试的:

javac -classpath .:WordSearch.jar WordSearchSolver.java

这是回应:

WordSearchSolver.java:16: cannot find symbol
symbol  : class PuzzleWord
location: class WordSearchSolver
    public ArrayList<PuzzleWord> findwords()
                 ^
WordSearchSolver.java:18: cannot find symbol
symbol  : class PuzzleWord
location: class WordSearchSolver
    return new ArrayList<PuzzleWord>();
                         ^

2 个错误

这是我的课:

import java.util.ArrayList;

public class WordSearchSolver
{
    public WordSearchSolver(int size, char[][] puzzleboard, ArrayList<String> words)
    {

    }

    public ArrayList<PuzzleWord> findwords()
    {
        return new ArrayList<PuzzleWord>();
    }
}

WordSearch.jar 包含:

PuzzleUI.class
PuzzleWord$Directions.class
PuzzleWord.class
Natural.class

(WordSearchSolver.java和Wordsearch.jar在同一个目录)

我错过了什么吗?

【问题讨论】:

    标签: java jar cygwin classpath javac


    【解决方案1】:

    虽然您使用的是 Cygwin,但我猜您的路径分隔符应该是分号,因为 Java 编译器/JVM 将在 Windows 环境中运行。

    javac -cp .\;WordSearch.jar ...
    

    注意分号必须转义以防止Cygwin shell解释(感谢下面的bkail)

    【讨论】:

    • 当我使用分号时,我遇到了更奇怪的涉及 bash 的错误。
    • 您必须引用分号以避免它被 Cygwin 解释。例如,javac -cp .\;WordSearch.jar 或 javac -cp ".;WordSearch.jar"
    【解决方案2】:

    您没有在 WordSearchSolver 类中从 WordSearch.jar 导入任何类。您需要此类顶部的导入语句,包括它们的包。

    【讨论】:

    • 它们在同一个包中。它们不需要导入
    【解决方案3】:

    它最终变成了分号和引号的组合。

    javac -classpath ".;WordSearch.jar" WordSearchSolver.java
    

    感谢大家为我指明正确的方向!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2013-07-31
      • 2018-12-12
      • 1970-01-01
      相关资源
      最近更新 更多