Как скомпилировать и запустить Java файлы с подключением файла из внешнего каталога
Такая задача:
- Создать следующую структуру каталогов и файлов:
lab1/
external/ - для модулей с байт-кодом из внешнего проекта
ExternalSummator.class
step4/
src/ – для модулей с исходным кодом
Hello.java
Dog.java
bin/ – для модулей с байт-кодом
Hello.java
public class Hello {
public static void main(String args[]) {
System.out.println("Hello!");
Dog mydog = new Dog();
System.out.println("Dog: " + mydog.voice());
System.out.println("2 + 2 = " + ExternalSummator.sum(2,2));
System.out.println("Finished Step 4");
}
}
Dog.java
public class ExternalSummator {
public static int sum(int a, int b) {
return a+b;
}
}
ExternalSummator.java
public class ExternalSummator {
public static int sum(int a, int b) {
return a+b;
}
}
Нужно:
Скомпилировать класс ExternalSummator и поместить полученный модуль с байт-кодом в каталог lab1/external
В консоли перейти в корень проекта для шага 4 (lab1/step4)
Скомпилировать класс Hello вместе со связанным с ним классом Dog и с подключением внешнего класса ExternalSummator, направив вывод компилятора в каталог bin.
Запустить класс Hello.
Дополнительно: найти различные варианты установки classpath
Сам уже довольно долго пытаюсь понять как можно разными способами запустить эту программу. Нашел способ компиляции, это отдельно скомпилировать ExternalSummator и отдельно скомпилировать остальные через
javac -d bin -cp ../external ./src/*
отдельно скомпилировать все остальное.
Только вот запустить не удается, через разные варианты типа этого:
java -cp ../external/*:./bin Hello
Выдает, что не может найти main class Hello
Подскажите, каким образом можно сделать запуск и как можно скомпилировать все в одну строку?
Ответы (1 шт):
Решилось. Powershell не правильно воспринимал символ ";" конкретного решения для нее я пока не нашел. А в Командной строке запустилось просто через указание расположения нужных файлов java -cp ../external/;../bin и через пробел название класса, где находится метод Main. Весь код:
java -cp ../external/;../bin Hello