我正在尝试在学习JSF应用程序中使用RichFaces。我已经使用
设置了Mavenhttps://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之类的类。问题也不是我!
我在哪里可以找到这些课程,或者我从一开始就采取了错误的方法?
由于
答案 0 :(得分:4)
Tomcat无法加载这些类,因为RichFaces对Guava的依赖性具有运行时范围。与编译范围相反,编译时不会将这些依赖关系添加到类路径中。你必须自己包括它们。
为实现此目的,您应该在POM的依赖关系管理部分中包含richfaces-bom,如in this JBoss wiki article所述。这将包括Guava和RichFaces可能需要的所有其他必需依赖项。
这是“物料清单”(BOM)模式。 The JBoss wiki比我更好地解释了这种模式,并链接到有关该主题的其他文章。
javax.annotation.Nullable
警告这是因为Guava使用JSR 305 annotations。在使用Guava时,不需要依赖JSR 305 jar,因为编译后注释不需要出现在类路径上。当然,如果您想在代码中使用@Nullable
和其他此类注释(您肯定应该这样做),则需要添加dependency on the JSR 305 jar。
答案 1 :(得分:1)
我已经从头开始使用jboss.org
中的说明我使用命令行创建项目:
mvn archetype: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中使项目工作时遇到了一些问题。这可能是由于我之前的实验设置。
然后它工作了!!
现在尝试将我现有的代码移植到新项目中。