Причины для java.io.FileNotFoundException: ресурс пути к классу [services.xml] не может быть открыт, потому что он не существует - PullRequest
1 голос
/ 01 ноября 2011

У меня есть веб-приложение на RAD 7.5.Я создаю приложение с использованием Maven и внедряю его в WebSphere 6.1.

Часть моего web.xml:

<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:services.xml</param-value>
</context-param>

Это единственное место, где я ссылаюсь на services.xml.

Мой services.xml находится в папке

FruitApplication/src/main/resources/services.xml

После сборки с помощью maven файл services.xml находится по следующему пути в целевой папке

target/FruitApplication-1.0.0/WEB-INF/classes/services.xml

При развертыванииЯ постоянно получаю ниже упомянутую ошибку.Однако при сборке приложения два-три раза оно исчезает само по себе, а затем снова появляется случайно.

Какова действительная причина этой ошибки?Как решить эту ошибку?

Вершина моего services.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">

Нужно ли что-то изменить здесь ???

Ниже приведенcomplete pom.xml, который я использую для "maven-install":

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>FruitApplication</groupId>
  <artifactId>FruitApplication</artifactId>
  <packaging>war</packaging>
  <version>1.0.0</version>

 <build> 
  <plugins>
    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.0.1</version>
        <configuration>
        <archive>
              <manifestFile>
            src/main/webapp/META-INF/MANIFEST.MF
          </manifestFile>
        </archive>
        </configuration>
    </plugin>
  </plugins>
 </build> 

 <dependencies>
        ... dependencies here ...
 </dependencies>

</project>

Я уже попробовал все три нижеприведенных варианта:

<param-value>classpath:services.xml</param-value>
<param-value>classpath:/services.xml</param-value>
<param-value>WEB-INF/classes/services.xml</param-value>

Как я развертываю:

Я удаляю приложение с сервера, щелкая правой кнопкой мыши по серверу и «добавляя или удаляя приложения»

Я выполняю run-as «maven-clean», а затем запускаю as-maven-install«на приложение и снова добавление приложения, щелкнув правой кнопкой мыши на сервере и« добавить или удалить приложения »

Ответы [ 3 ]

3 голосов
/ 01 ноября 2011

Вы пробовали classpath:/services.xml?Начальная косая черта означает удаление ресурса из корня пути к классам.Без него файл, как ожидается, будет находиться в пакете того класса, который его загружает (что, я допускаю, я не знаю, что это было бы в этом случае).

См. http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#getResourceAsStream%28java.lang.String%29

1 голос
/ 30 мая 2012
  1. Выберите проект, в котором существуют файлы ресурсов. Щелкните правой кнопкой мыши - Путь сборки - настройте путь сборки - источники -Добавить папку - добавьте папку, в которой существует файл ресурса. Это добавит папку к вашему пути класса.

  2. Если вышеуказанный проект / jar является частью другого WAR / EAR, выберите эти WAR и / или EAR-свойства - зависимости модуля j2ee и выберите вышеуказанный проект для добавления в сборку.дорожка.Перезагрузите сервер.

0 голосов
/ 15 ноября 2011

Выясните, есть ли проблема с Websphere / RAD или с приложением?

Сначала соберите файл war, поместите его в контейнер Tomcat и проверьте, не появляется ли еще ошибка.1. Если вы видите, скопируйте services.xml в каталог WEB-INF и WEB-INF / classes и посмотрите, работает ли он.2. Также проверьте свою переменную системной среды CLASSPATH, система CLASSPATH может переопределить путь к классу вашего приложения.

Если с Tomcat все в порядке, есть что-то специфическое для Websphere / RAD: 3. Проверьте вашу среду websphere, я вспоминаю тамэто некоторая опция в веб-сфере, где вы можете установить / переопределить / префикс classpath.

...