Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包含共享jar的Maven可以编译,但不能实时工作_Java_Maven_Jar_Shared Libraries_War - Fatal编程技术网

Java 包含共享jar的Maven可以编译,但不能实时工作

Java 包含共享jar的Maven可以编译,但不能实时工作,java,maven,jar,shared-libraries,war,Java,Maven,Jar,Shared Libraries,War,我有两个项目: ProjectA和SharedProject 我在ProjectA中使用以下POM文件: <dependency> <groupId>MyGroup</groupId> <artifactId>shared</artifactId> <version>SNAPSHOT-1.0.0</version> &l

我有两个项目:

ProjectA和SharedProject

我在ProjectA中使用以下POM文件:

    <dependency>
        <groupId>MyGroup</groupId>
        <artifactId>shared</artifactId>
        <version>SNAPSHOT-1.0.0</version>           
        <scope>compile</scope>          
    </dependency>
<dependency>

MyGroup
共享
快照-1.0.0
编撰
共享项目的pom如下所示:

<modelVersion>4.0.0</modelVersion>
<groupId>MyGroup</groupId>
<artifactId>shared</artifactId>
<version>SNAPSHOT-1.0.0</version>
<name>shared</name>
<packaging>jar</packaging>
4.0.0
MyGroup
共享
快照-1.0.0
共享
罐子
我的ProjectA进行编译(实际上使用的是从SharedProject导入的内容),所以我就这样做了

运行后出现问题:ProjectA->mvn安装 在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)
严重:启动过滤器cors时出现异常
java.lang.ClassNotFoundException:com.mygroup.shared.filter.common.CorsFilter
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
位于org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
位于org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
位于org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
位于org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
位于org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107)
位于org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(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>

科尔斯
com.mygroup.shared.filter.common.CorsFilter
科尔斯
/*

从依赖项声明中删除范围标记,一切都会好起来的


范围
compile
对maven说,这种依赖关系只会在编译时使用。例如,它在MapStruct中使用,MapStruct在编译阶段生成代码,之后就不需要依赖项

从依赖项声明中删除scope标记,一切都会好起来的


范围
compile
对maven说,这种依赖关系只会在编译时使用。例如,它在MapStruct中使用,MapStruct在编译阶段生成代码,之后就不需要依赖项

按照惯例,使用类似于
1.0.0-SNAPSHOT
的版本,因为从Mavens的角度来看,版本
SNAPSHOT-1.0.0
是一个发行版!第二次将永远不会检查它…因此,第一次执行
mvn安装时,
jar将存储到本地缓存中。第二次也是这样,但是使用它的项目不会被通知某些内容已更改。这就是为什么您应该使用所谓的
SNASPHOT
…这意味着类似
1.0.0-SNAPSHOT
…的版本,而不是…按照惯例,使用类似
1.0.0-SNAPSHOT
的版本,因为从Mavens的角度来看,
SNAPSHOT-1.0.0
是一个版本!第二次将永远不会检查它…因此,第一次执行
mvn安装时,
jar将存储到本地缓存中。第二次也是这样,但是使用它的项目不会被通知某些内容已更改。这就是为什么您应该使用所谓的
SNASPHOT的
…这意味着类似于
1.0.0-SNAPSHOT的版本
…相反…可以省略范围编译,但不会影响结果,因为默认情况下是范围
compile
。从依赖项声明中删除范围标记无助于范围编译,但是不会影响结果,因为默认情况下是scope
compile
。从依赖项声明中删除scope标记没有帮助