我在Eclipse中使用maven工作了一年的Java(Java 8)Web应用程序。我创建了这个webapp并从项目开始就使用Maven v 3.5。我通常在tomcat 8.5服务器上部署我的Web应用程序('Run as =>在服务器上运行')。
我总是用我的pom.xml管理我的依赖项,防止使用Eclipse的hte build path配置菜单做一些奇怪的事情。
问题从昨天开始:我添加了一个依赖于我之前制作和安装的其他java / maven项目,并在我的pom.xml上添加这些行:
<dependency>
<groupId>tlnPdf</groupId>
<artifactId>tlnPdf</artifactId>
<version>1.0</version>
</dependency>
当我从其他项目中添加一个新的依赖时,我的eclipse确实有用,我在部署webapp时遇到了一个问题,一些关于我的其他项目的pom.properties的消息(对不起但我记不住了)。在这种情况下,和我一直一样,我只需要关闭我的webapp项目,从命令提示符启动mvn eclipse:clean
,然后重新打开我的项目;问题消失了。
Eclipse不会对从新依赖项中导入类的类显示问题。
此外,我在webapp的开头有一个类的监听器,在我的web.xml上声明:
<listener>
<listener-class>com.package.InitTomcat</listener-class>
</listener>
这个监听器是功能性的,我最后没有修改它。
但昨天出现了一个新问题;当我想在我的服务器上部署我的webapp时,我有很多这样的警告:
org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [...] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
。然后,一个错误告诉我InitTomcat类不存在:
java.lang.ClassNotFoundException: com.package.InitTomcat
所以,首先我认为缓存警告导致了问题。我做了this stackoverflow post解释的内容,警告消失了;但不是错误。
在eclipse之外,在命令提示符下,我尝试编译我的项目并使用app.war
获取mvn clean install
文件。编译没有显示任何错误,战争是正确的。我在tomcat上手动部署了我的战争,没有出现任何问题。
因此,我查看了两个已部署的目录(一个来自eclipse,另一个来自我的app.war),我在部署的存储库树上看到了一些好奇的东西:
在良好部署的webapp(来自app.war)上,我有类似的东西:
|*some directories and files
|*META-INF
|*WEB-INF
|*classes
|com (etc...)
|*lib
|web.xml
在eclipse中部署的webapp中:
*some directories and files
*META-INF
*WEB-INF
|*classes
|*.settings (why the hell does this directory are here ?)
|*bin
|*.settings
|*src
|*target
|*classes
|*com ect... (my .class files are here !!)
|*generated-sources
|*m2e-wtp
|*maven-archiver
|*maven-status
|*myapp (this directory have the same content as the "good web app deployed")
|*test-classes
|*WebContent
|*temp
|*webContent
|pom.xml
|.project
|*src
|*target
|*temp
|*WebContent
|*...
|*lib
|web.xml
“好”的webapp大小为275Mb,另一个是865Mb
我怀疑当eclipse部署我的web-app时会出现这个问题,并解释说它无法找到InitTomcat类,因为它似乎位于错误的位置。但我不知道为什么现在决定这样做。
我尝试从eclipse中删除项目,清除eclipse等等但没有结果。我试过3个不同版本的tomcat:8.5.14,8.2.23和9.0.2,总是有相同的行为
当我感到沮丧的时候,我下载了eclipse的最新版本,然后用maven将我的webapp项目导入其中;但它有相同的结果。
最后,我的问题很简单:有没有人知道它发生了什么,以及如何解决它?提前谢谢!
答案 0 :(得分:0)
我终于看到了我的问题所在:寻找属性&gt; &#34;部署组装&#34;在我的项目中,部署模式很奇怪。我不知道他什么时候改变,也不知道为什么,但我做了以下重新启动&#34;干净利落的&#34;它们:
这些都是伎俩。问题是之前,我没有从eclipse中删除属性文件,导入项目时重新加载了包配置。