Java 使类的对象出现在其他项目Spring中时,ClassNotFoundException

Java 使类的对象出现在其他项目Spring中时,ClassNotFoundException,java,spring,gradle,noclassdeffounderror,classnotfound,Java,Spring,Gradle,Noclassdeffounderror,Classnotfound,我试图使一个类对象出现在其他项目中 项目A包含TestBean 导入java.io.Serializable import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class TestBean implements Serializable{ private static final long serialVer

我试图使一个类对象出现在其他项目中

项目A包含TestBean 导入java.io.Serializable

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

public class TestBean implements Serializable{

    private static final long serialVersionUID = 1L;
    private String name;
    private Integer age;

    @JsonCreator
    public TestBean(@JsonProperty("name") String name, @JsonProperty("age") Integer age) {
        this.name = name;
        this.age = age;
    }

    public TestBean() {
        // TODO Auto-generated constructor stub
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

}
我正在项目B中尝试访问此

B项目的build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'

repositories{
    jcenter{
        url "http://jcenter.bintray.com/"
    }
}

dependencies {    

    compile project(':projectA')
    runtime ':projectA' 
}
include(':projectA')
project(':projectA').projectDir = new File('/Users/kegupta/Framework/projectA/')

rootProject.name = 'projectA'
项目B的settings.gradle

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'

repositories{
    jcenter{
        url "http://jcenter.bintray.com/"
    }
}

dependencies {    

    compile project(':projectA')
    runtime ':projectA' 
}
include(':projectA')
project(':projectA').projectDir = new File('/Users/kegupta/Framework/projectA/')

rootProject.name = 'projectA'
当我试图通过RESTAPI访问ProjectB的某些方法中的TestBean时,观察到以下错误

    SEVERE: Servlet.service() for servlet [App1] in context with path [/customContext] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/example/beans/TestBean] with root cause
java.lang.ClassNotFoundException: com.example.beans.TestBean
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
    at com.example.rest.TestControllerLead.readBookmarks(TestControllerLead.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

任何熟悉错误的人。非常感谢您的帮助。

在ProjectB的类路径中添加.class文件解决了我的问题

sourceSets {
       main {
        output.resourcesDir = '{Path to projectB}/res'
        output.classesDir   = '{Path to projectB}//bin'
       }
 }

包含
TestBean
的项目是否存在于Tomcat Web应用程序类路径中?(jar文件存在于任何文件夹中,如
WEB-INF/lib
)@DaniloGuimaraes是的,TestBean存在于Tomcat WEB应用程序类路径中。我可以在ProjectA中创建TestBean的对象。jar文件存在于任何文件夹中,比如WEB-INF/lib——您在谈论哪个jar文件?