Как скомпилировать и запустить Java файлы с подключением файла из внешнего каталога

Такая задача:

  1. Создать следующую структуру каталогов и файлов:
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; 
  } 
} 

Нужно:

  1. Скомпилировать класс ExternalSummator и поместить полученный модуль с байт-кодом в каталог lab1/external

  2. В консоли перейти в корень проекта для шага 4 (lab1/step4)

  3. Скомпилировать класс Hello вместе со связанным с ним классом Dog и с подключением внешнего класса ExternalSummator, направив вывод компилятора в каталог bin.

  4. Запустить класс Hello.

Дополнительно: найти различные варианты установки classpath


Сам уже довольно долго пытаюсь понять как можно разными способами запустить эту программу. Нашел способ компиляции, это отдельно скомпилировать ExternalSummator и отдельно скомпилировать остальные через

javac -d bin -cp ../external ./src/*

отдельно скомпилировать все остальное.

Только вот запустить не удается, через разные варианты типа этого:

java -cp ../external/*:./bin Hello

Выдает, что не может найти main class Hello

Подскажите, каким образом можно сделать запуск и как можно скомпилировать все в одну строку?


Ответы (1 шт):

Автор решения: Atljh0987

Решилось. Powershell не правильно воспринимал символ ";" конкретного решения для нее я пока не нашел. А в Командной строке запустилось просто через указание расположения нужных файлов java -cp ../external/;../bin и через пробел название класса, где находится метод Main. Весь код:

java -cp ../external/;../bin Hello
→ Ссылка