我有2个项目:
ProjectA和SharedProject。
我在ProjectA中使用以下POM文件:
<dependency>
<groupId>MyGroup</groupId>
<artifactId>shared</artifactId>
<version>SNAPSHOT-1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
共享项目的pom如下所示:
<modelVersion>4.0.0</modelVersion>
<groupId>MyGroup</groupId>
<artifactId>shared</artifactId>
<version>SNAPSHOT-1.0.0</version>
<name>shared</name>
<packaging>jar</packaging>
我的ProjectA进行了编译(实际上使用了SharedProject的导入),所以我一直在进行。
运行后出现问题:ProjectA-> mvn install
并在tomcat上运行
我收到以下错误:
SEVERE: Exception starting filter cors
java.lang.ClassNotFoundException: com.mygroup.shared.filter.common.CorsFilter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
该找不到的类位于SharedProject中,并在ProjectA web.xml文件中引用。这是ProjectA web.xml的特定参考代码:
<filter>
<filter-name>cors</filter-name>
<filter-class>com.mygroup.shared.filter.common.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cors</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
最佳答案
从依赖声明中删除作用域标记,一切都会好起来的。
范围compile
告诉maven,此依赖项仅在编译时使用。例如,它用在MapStruct中,在编译阶段生成代码,此后不需要依赖关系。
关于java - 包含共享jar的Maven可以编译但不能实时运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41793498/