项目作为依赖项未打包在 .war 文件中
我有一个 Jersey Tomcat 项目 B,它依赖于另一个类似的项目 A,我正在 Eclipse 上开发。
当我单独运行 A 时,它运行没有问题。其构建路径的导出配置为:
A 的部署程序集是:
然后,对于项目 B,我将项目 A 导入到 java 构建路径中像这样:
项目 B 的构建路径如下所示:
项目 B 的 Web 部署程序集为:
项目 A 被列为 .war,我是不确定这是否与该问题有关。项目 A 的 pom.xml 将 war 列为打包:
<packaging>war</packaging>
项目 B 的 pom.xml 提到了项目 A,如下所示:
<dependency>
<groupId>some.project.A</groupId>
<artifactId>flocktracker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
Eclipse 不会显示任何问题,直到我尝试在 Tomcat 服务器中部署时,我收到此错误:
java.lang.NoClassDefFoundError: some/project/A/SomeClassInA
at some.project.B.SomeClassInB.<init>(SomeClassInB.java:##)
如果它有帮助,SomeClassInA 是 org.glassfish.jersey.server.ResourceConfig 的实现。
Web.xml 文件中提到了 SomeClassInA,如下所示:
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>some.projectA.SomeClassInA</param-value>
</init-param>
SomeClassInA 是 javax.ws.rs.ext.ContextResolver
的实现
我使用右键单击 project >出口> WAR 文件
来检查文件的内容,但我在 WEB-INF/classess 或 .war 文件中的其他位置找不到项目 A 的类。
我是否遗漏了什么或我做错了什么?
谢谢!
I have a Jersey Tomcat project B that depends on another similar project A, I am developing on Eclipse.
When I run A on it's own, it runs with no problems. The export configuration for its build path is:
And the deployment assembly for A is:
Then, for project B, I imported project A into the java build path like this:
The build path for project B looks like this:
And the web deployment assembly for project B is:
Project A is listed as a .war, I am not sure if this is related to the issue. The pom.xml for project A lists war as packaging:
<packaging>war</packaging>
The pom.xml for project B mentions project A like so:
<dependency>
<groupId>some.project.A</groupId>
<artifactId>flocktracker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
Eclipse doesn't show any issues until when I try to deploy in a Tomcat server, whe I get this error:
java.lang.NoClassDefFoundError: some/project/A/SomeClassInA
at some.project.B.SomeClassInB.<init>(SomeClassInB.java:##)
If it helps, SomeClassInA is an implementation of org.glassfish.jersey.server.ResourceConfig
.
SomeClassInA is mentioned in the web.xml file like so:
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>some.projectA.SomeClassInA</param-value>
</init-param>
SomeClassInA is an implementation of javax.ws.rs.ext.ContextResolver<T>
I used right click on project > export > WAR file
to examine the contents of the file and I couldn't find the classes of Project A on WEB-INF/classess or elsewhere in the .war file.
Is there something I am missing or that I am doing wrong?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将 Eclipse 工具放在一边,从 Maven 配置的角度来看:
您有以下选择。所有这些都需要对 ProjectB 进行修改:
true
在 ProjectA 中配置 war 插件,以在 war 工件旁边生成 jar 工件这会在 ProjectA 中生成一个类工件,该工件可在 ProjectB 中用作
classes
的依赖项Keeping the Eclipse tooling aside, from a Maven configuration perspective:
You have the following choices. All of them require a modification to ProjectB as well:
<attachClasses>true</attachClasses>
This produces a classes artifact in ProjectA, which can be used in ProjectB as a dependency with
<classifier>classes</classifier>