如何解决无法从在Tomcat中运行的Guava r08加载类无法从源代码编译缺少javax.annotations
| 我正在尝试在学习的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之类的类。问题不是我!
我在哪里可以找到这些课程,还是从一开始就采取了错误的方法?
谢谢
理查德
解决方法
RichFaces依赖项的Maven配置
Tomcat无法加载这些类,因为RichFaces对Guava的依赖具有运行时范围。与编译范围相反,这些依赖项在编译时不会添加到类路径中。您必须自己包括它们。
为此,您应该在POM的依赖管理部分中包含richfaces-bom,如本JBoss Wiki文章中所述。这将包括Guava和RichFaces可能需要的所有其他必需依赖项。
这是“物料清单”(BOM)模式。 JBoss Wiki比我对这种模式的解释要好得多,并且链接到该主题的其他文章。
番石榴源中的
javax.annotation.Nullable
警告
发生这些是因为Guava使用JSR 305批注。使用Guava时不需要依赖JSR 305 jar,因为一旦编译后,注释就不需要出现在类路径上。当然,如果您想在代码中使用ѭ3和其他此类注释(您肯定应该这样做),则需要在JSR 305 jar上添加依赖项。
,我从头开始使用jboss.org上的说明进行操作
我安装了Maven 3.0.3
我将提供的settings.xml复制到了我的.m2目录,并从1添加了JBOSS部分
我使用命令行创建了项目:
mvn原型:generate -DarchetypeGroupId = org.richfaces.archetypes \\
-DarchetypeArtifactId = richfaces-archetype-simpleapp \\
-DarchetypeVersion = 4.0.0-快照\\
-DgroupId = uk.m0rjc \\
-DartifactId = jsfplay
然后,我构建了该项目。我必须从m2存储库中删除以前下载的番石榴罐,因为它们已损坏-也许是我最初的问题。
mvn清洁包装
我将生成的WAR文件复制到Tomcat,并导航到localhost:8080 / jsfplay-1.0-SNAPSHOT /
我在使项目在Eclipse中工作时遇到了一些问题。这些可能是由于我根据之前的实验而设置的。
我使用“导入-> Maven->现有Maven项目\”将其导入
我不得不将项目切换到JDK 1.6和1.6兼容模式。
我无法使用JavaServer Faces方面。这似乎无关紧要。
我必须设置服务器配置文件以使用正确的JDK
我必须将* .xhtml映射到web.xml中的Faces Servlet。当我按下错误的按钮接受JSF插件时,它可能已损坏。
然后它起作用了!
现在尝试将现有代码移植到新项目中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。