Как запустить java-код из командной строки с исходным кодом в двух разных пакетах?

Поэтому я хочу запустить класс WordFrequencyCounter, который вложен в папку: C:\Users\Mike\Documents\Computer Science\AI\Machine Learning\175\Assignment 2\src\ir\assignments\two\b

но когда я захожу в эту папку и запускаю:

javac WordFrequencyCounter.java

выдает ошибку, потому что говорит, что не может найти import ir.assignments.two.a.Frequency; в частности, он говорит, что пакет ir.assignments.two.a не существует, но этот файл находится в:

C:\Users\Mike\Documents\Computer Science\AI\Machine Learning\175\Assignment 2\src\ir\assignments\two\a

Я также попытался вызвать javac WordFrequencyCounter.java из папки: C:\Users\Mike\Documents\Computer Science\AI\Machine Learning\175\Assignment 2

но это тоже не работает. Итак, я хочу иметь возможность скомпилировать и запустить WordFrequencyCounter, а затем передать ему входной файл, который находится в C:\Users\Mike\Documents\Computer Science\AI\Machine Learning\175\Assignment 2 из командной строки. Я могу сделать это из IDE, но не могу заставить его работать через командную строку.

Я думаю, что это проблема, связанная с classpath, но я не смог найти ничего полезного для моего конкретного примера, и ничего из того, что я пробовал, не сработало. введите здесь описание изображения

Вот основной метод для WordFrequencyCounter:

public static void main(String[] args) throws FileNotFoundException {
    File file = new File(args[0]);

    List<String> words = Utilities.tokenizeFile(file);

    List<Frequency> frequencies = computeWordFrequencies(words);
    Utilities.printFrequencies(frequencies);
}

person M. Vorobyov    schedule 27.11.2012    source источник
comment
Находится ли WordFrequencyCounter в пакете ir.assignments.two.b?   -  person Sai    schedule 27.11.2012


Ответы (1)


перейдите в папку src и запустите

javac -d . ir/assignments/2/b/MainClass.java

и используйте java ir.assignments.2.b.MainClass для его запуска.

person Subin Sebastian    schedule 27.11.2012
comment
Отлично компиляция сработала. Но я все еще застрял в запуске кода, потому что у меня есть входной файл в родительской папке src (папка проекта). Я добавил изображение структуры файла для пояснения. Кроме того, мне было интересно, как это сделать, установив переменную среды CLASSPATH? - person M. Vorobyov; 27.11.2012
comment
Если это ClassPathResource, запустите свой код, используя java -cp ..;. ir.addigmanets.2.b.MainClass. Это добавит родительскую библиотеку и текущую библиотеку в путь к классу jvm. - person Subin Sebastian; 27.11.2012
comment
попробуйте java -cp ..;. ir.addignmanets.2.b.MainClass ../inputfilename Это передаст путь к файлу (относительный путь) в основной java - person Subin Sebastian; 27.11.2012