Модульные тесты не выполняются в режиме Run All, но проходят, когда они запускаются один

Как только jar находится на пути класса выполнения, вы импортируете их в обычном режиме:

import the.package.and.name.of.TheClass;

Это связано с тем, что виртуальная машина Java имеет концепцию «пути к классу». Этот путь класса заполняется всеми файлами (классами и ресурсами), найденными в файлах jar и папках, размещенных в пути к классам.

Например, если у вас две jar и одна папка:

A.jar
  com/
    mycompany/
      A.class
      Another.class
B.jar
  com/
    mycompany/
      B.class
      neededImage.gif
bin-folder/
  org/
    apache/
      Something.class

Из JVM POV у вас есть сумма всех этих папок, как если бы они были в одной папке.

Таким образом, вы можете свободно импортировать любой класс, который вам нужен, указав полное имя, независимо, если он находится внутри банки или в папке bin проекта.

На самом деле банки - это не более чем zip-файлы из папок, содержащие скомпилированные классы (и, в конечном итоге, другие ресурсы).

Класс путь объявляется JVM при запуске программы, используя ключ командной строки «-cp». Например, для предыдущих двух банок и одной папки в окнах вы должны были бы написать:

java -cp A.jar;B.jar;bin-folder your.main.class.Here
0
задан user9277668 30 December 2018 в 20:51
поделиться