Почему я не могу скомпилировать свой java-файл на cygwin, когда ему нужны классы из jar-файла? - PullRequest
0 голосов
/ 05 октября 2009

Я пытаюсь скомпилировать свой класс вместе с предоставленным файлом .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 находятся в одном каталоге)

Я что-то упустил?

Ответы [ 3 ]

3 голосов
/ 05 октября 2009

Хотя вы находитесь на Cygwin, я предполагаю, что ваш разделитель пути должен быть точкой с запятой, поскольку компилятор Java / JVM будет работать в среде Windows.

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

Обратите внимание, что точка с запятой должна быть экранирована , чтобы предотвратить интерпретацию оболочкой Cygwin (спасибо bkail ниже)

1 голос
/ 05 октября 2009

Вы не импортируете ни один из классов из вашего WordSearch.jar в вашем WordSearchSolver классе. Вам нужны операторы импорта в верхней части этого класса, включая их пакет.

0 голосов
/ 05 октября 2009

Получилось сочетание точек с запятой и кавычек.

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

Спасибо всем за то, что указали мне правильное направление!

...