Невозможно загрузить классы из Guava r08, работающего в Tomcat. Невозможно скомпилировать из источника. Отсутствует javax.annotations - PullRequest
2 голосов
/ 24 мая 2011

Я пытаюсь использовать RichFaces в своем обучающем приложении JSF.Я настроил Maven, используя

https://repository.jboss.org/nexus/content/groups/public-jboss/

Я включил зависимости

    <dependency>
        <groupId>org.richfaces.ui</groupId>
        <artifactId>richfaces-components-ui</artifactId>
        <version>4.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.richfaces.core</groupId>
        <artifactId>richfaces-core-impl</artifactId>
        <version>4.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.richfaces.ui</groupId>
        <artifactId>richfaces-components-api</artifactId>
        <version>4.0.0.Final</version>
        <type>pom</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.richfaces.core</groupId>
        <artifactId>richfaces-core-api</artifactId>
        <version>4.0.0.Final</version>
        <type>pom</type>
        <scope>compile</scope>
    </dependency>

Это принесло guava-r08.jar.

Когда я пытаюсь запуститьВ проекте Tomcat7 я вижу много исключений загрузки классов - не удается загрузить классы, которые, как я вижу, существуют в guava-r08.jar вместе с sac-1.3 и cssparser-0.9.5.

Если я попытаюсь использоватьвместо этого - взяв источник из guava-r09 - Eclipse говорит мне, что он не может найти классы, такие как javax.annotation.Nullable.Проблема не в том, что я не могу!

Где я могу найти эти классы, или я ошибаюсь с самого начала?

Спасибо

  • Ричард

Ответы [ 2 ]

4 голосов
/ 25 мая 2011

Конфигурация Maven для зависимостей RichFaces

Tomcat не может загрузить эти классы, потому что зависимость RichFaces от Guava имеет область действия runtime . В отличие от области compile , эти зависимости не добавляются в путь к классам при компиляции. Вы должны включить их сами.

Чтобы достичь этого, вы должны включить richfaces-bom в раздел управления зависимостями вашего POM, как объяснено в этой статье вики JBoss . Это будет включать Guava и все другие необходимые зависимости, которые могут понадобиться RichFaces.

Это шаблон "спецификации материалов" (BOM). Вики JBoss объясняет этот паттерн гораздо лучше, чем я, и ссылается на другие статьи на эту тему.


javax.annotation.Nullable предупреждений в источнике гуавы

Это происходит потому, что Гуава использует аннотации JSR 305 . При использовании Guava не требуется зависеть от JAR 305 jar, поскольку аннотации не обязательно должны присутствовать в пути к классам после компиляции. Конечно, если вы хотите использовать @Nullable и другие подобные аннотации в своем коде (вы обязательно должны это сделать), вам нужно добавить зависимость от JSR 305 jar .

1 голос
/ 26 мая 2011

Я начал с нуля, используя инструкции на jboss.org

  • Я установил Maven 3.0.3
  • Я скопировал прилагаемый файл settings.xml в свой.m2 каталог и добавил раздел JBOSS из 1
  • Я использовал командную строку для создания проекта:

    mvn архетип: generate -DarchetypeGroupId = org.richfaces.archetypes \ -DarchetypeArtifactId = richfaces-archetype-simpleapp \ -DarchetypeVersion = 4.0.0-SNAPSHOT \ -DgroupId = uk.m0rjc \ -DartifactId = jsfplay

  • Затем я построил проект,Мне пришлось удалить ранее загруженные файлы гуавы из моего репозитория m2, потому что они были повреждены - возможно, это была моя первоначальная проблема.

    mvn clean package

  • Я скопировал файл WARсозданный для Tomcat и перешедший на страницу примера по адресу localhost: 8080 / jsfplay-1.0-SNAPSHOT /

У меня были некоторые проблемы с работой проекта в Eclipse.Это может быть связано с моей настройкой из предыдущих экспериментов.

  • Я использовал «Импорт -> Maven -> Существующий проект Maven» для его импорта
  • Мне пришлось переключить проект наРежим совместимости JDK 1.6 и 1.6.
  • Мне не удалось использовать фасет JavaServer Faces.Кажется, это не имеет значения.
  • Мне пришлось настроить свой профиль сервера для использования правильного JDK
  • Мне нужно было сопоставить * .xhtml с сервлетом Faces в web.xml.Возможно, он был поврежден, когда я нажал неправильную кнопку, чтобы принять надстройку JSF.

Тогда это сработало !!

Теперь попробуйте перенести существующий код в новый проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...