Я сделал уже довольно некоторое исследование в Интернете по этой проблеме. Мне пока не повезло. В основном этот кусок кода отлично работает на Windows, с моей JUnit тест Src \ Test \ Java \ COM \ проекта \ Utils \ MyTestCase.java:FileNotFoundException на машине linux при использовании getClassLoader(). GetResource
URL urlApplicationContext = this.getClass().getClassLoader().getResource("applicationContext.xml");
final String[] paths = { urlApplicationContext.getFile()};
ApplicationContext ctx = new FileSystemXmlApplicationContext(paths);
Этот файл находится там:
\ SRC \ тест \ ресурсы \ applicationContext.xml
Однако на машине Дженкинс, которая запускается на Linux, я получил следующее сообщение об ошибке:
testSimple (com.project.ClientImplTest): IOException синтаксического анализа XML из файла [/data/continuous/workspace/sonar/main_proj/data/continuous/workspace/sonar/main_proj/target/main/WEB-INF/test-classes/applicationContext.xml]; вложенной исключение составляет java.io.FileNotFoundException: данных/непрерывная/рабочее пространство/сонар/main_proj/цель/основные/WEB-INF/тест-классы/applicationContext.xml (Нет такого файла или каталога)
Я уже подтвердил, что файл /data/continuous/workspace/sonar/main_proj/target/main/WEB-INF/test-classes/applicationContext.xml существует.
Почему getResource() не нашел правильный путь в Linux. Кажется, он находит данные/непрерывный/... вместо/data/continous/... по какой-то причине? Поэтому FileSystemXmlApplicationContext может возвращать исключение, потому что он не может найти файл.
Благодаря
Привет, Каким методом загрузки ressource является this.getClass(). GetClassLoader(). GetResource ("applicationContext-hibernate-junit.xml"). Путь на Linux-машине выполняется динамически. Я не знаю, что вы подразумеваете под «загрузчиком ресурсов»? –
'getResource' дает вам только URL-адрес. Затем вы загружаете xml по url и получаете исключение, потому что проскальзывание пропущено => путь неверен. Метод, в котором вы загружаете этот xml, я называл загрузчиком ресурсов. Если этот метод находится внутри Дженкинса, возможно, вы используете его неправильно. –
try: 1) System.out.println (urlApplicationContext); 2) ctx = new FileSystemXmlApplicationContext ("target/main/WEB-INF/test-classes/applicationContext.xml"); –