Cannot start Tomcat Server in IntelliJ java.lang.ClassNotFoundException: javax.persistence.Persistence

huangapple 未分类评论44阅读模式
英文:

Cannot start Tomcat Server in IntelliJ java.lang.ClassNotFoundException: javax.persistence.Persistence

问题

我尝试恢复我的项目。它原先在Eclipse中运行得很好。现在我将它迁移到了IntelliJ中,这是一个JavaEE的Maven项目。

但是,当我尝试启动Tomcat时,我遇到了一个错误。这个错误出现在Tomcat日志中:

...
26-Jul-2020 23:06:16.918 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [controller.frontend.CommonFilter]
    java.lang.NoClassDefFoundError: javax/persistence/Persistence
        at dao.JpaDAO.<clinit>(JpaDAO.java:18)
        ...
Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
    ...

这也出现在终端中:

...
26-Jul-2020 23:06:16.918 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file
26-Jul-2020 23:06:16.918 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [/BookStoreWebsite_war_exploded] startup failed due to previous errors
...

我删除了 `controller.frontend.CommonFilter`,认为它可能是问题所在,但现在出现了另一个异常:

...
26-Jul-2020 23:27:16.303 SEVERE [http-nio-9080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [controller.frontend.HomeServlet] in context with path [/BookStoreWebsite_war_exploded] threw exception [Servlet execution threw an exception] with root cause
    java.lang.ClassNotFoundException: javax.persistence.Persistence
        ...
    at dao.JpaDAO.<clinit>(JpaDAO.java:18)
        ...
    at controller.frontend.HomeServlet.doGet(HomeServlet.java:29)
    ...
    java.lang.NoClassDefFoundError: Could not initialize class dao.BookDAO
        at controller.frontend.HomeServlet.doGet(HomeServlet.java:29)
        ...
...

以下是我的 `pom.xml`:

...
<dependencies>
    <dependency>
        ...
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.3.16.Final</version>
        ...
    </dependency>
    ...
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    ...
</dependencies>
...

以下是我的 `persistence.xml`:

...
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
          http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">
    <persistence-unit name="BookStoreWebsite">
        <properties>
            ...
        </properties>
    </persistence-unit>
</persistence>
...

这是我的目录结构:

[链接已省略]

我尝试在Google上搜索,但没有帮助。我尝试强制从m2文件夹中删除Maven依赖并重新导入,但也没有效果。

我做错了什么?谢谢!
英文:

I tried to restore my project. It was in Eclipse and it worked there perfectly. Now i moved it to intelliJ, It's a JavaEE maven project.
But, when i try to start Tomcat i get an error. It's in the Tomcat log:

26-Jul-2020 23:06:16.918 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [controller.frontend.CommonFilter]
	java.lang.NoClassDefFoundError: javax/persistence/Persistence
		at dao.JpaDAO.&lt;clinit&gt;(JpaDAO.java:18)
		at controller.frontend.CommonFilter.&lt;init&gt;(CommonFilter.java:25)
		at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
		at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
		at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
		at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
		at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151)
		at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249)
		at org.apache.catalina.core.ApplicationFilterConfig.&lt;init&gt;(ApplicationFilterConfig.java:102)
		at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4528)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
		at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
		at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
		at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
		at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1727)
		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.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:288)
		at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
		at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
		at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:456)
		at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:405)
		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.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:288)
		at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
		at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
		at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468)
		at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
		at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
		at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
		at java.security.AccessController.doPrivileged(Native Method)
		at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408)
		at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
		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 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
		at sun.rmi.transport.Transport$1.run(Transport.java:200)
		at sun.rmi.transport.Transport$1.run(Transport.java:197)
		at java.security.AccessController.doPrivileged(Native Method)
		at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
		at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
		at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
		at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
		at java.security.AccessController.doPrivileged(Native Method)
		at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at java.lang.Thread.run(Thread.java:748)
	Caused by: java.lang.ClassNotFoundException: javax.persistence.Persistence
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
		... 56 more

And this is in the terminal:

 Connected to server
    [2020-07-26 11:06:16,480] Artifact BookStoreWebsite:war exploded: Artifact is being deployed, please wait...
    26-Jul-2020 23:06:16.918 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file
    26-Jul-2020 23:06:16.918 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [/BookStoreWebsite_war_exploded] startup failed due to previous errors
    [2020-07-26 11:06:16,949] Artifact BookStoreWebsite:war exploded: Error during artifact deployment. See server log for details.
    26-Jul-2020 23:06:26.299 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory РЈСЃС‚Р&#176;РЅРѕРІРєР&#176; РІР&#181;Р&#177; РїСЂРёР&#187;РѕР&#182;Р&#181;РЅРёСЏ РІ РїР&#176;РїРєСѓ [C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\manager]
    26-Jul-2020 23:06:26.362 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\manager] has finished in [63] ms

Then i deleted controller.frontend.CommonFilter, thought that was the issue but now, another exception:

    26-Jul-2020 23:27:16.303 SEVERE [http-nio-9080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [controller.frontend.HomeServlet] in context with path [/BookStoreWebsite_war_exploded] threw exception [Servlet execution threw an exception] with root cause
    	java.lang.ClassNotFoundException: javax.persistence.Persistence
    		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
    		at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
    		at dao.JpaDAO.&lt;clinit&gt;(JpaDAO.java:18)
    		at controller.frontend.HomeServlet.doGet(HomeServlet.java:29)
    		at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    		at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    		at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    		at java.lang.Thread.run(Thread.java:748)
    26-Jul-2020 23:27:16.450 SEVERE [http-nio-9080-exec-3] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [controller.frontend.HomeServlet] in context with path [/BookStoreWebsite_war_exploded] threw exception [Servlet execution threw an exception] with root cause
    	java.lang.NoClassDefFoundError: Could not initialize class dao.BookDAO
    		at controller.frontend.HomeServlet.doGet(HomeServlet.java:29)
    		at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    		at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    		at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    		at java.lang.Thread.run(Thread.java:748)

Here is my pom.xml:

 &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
    &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
             xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
             xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
        &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
    
        &lt;groupId&gt;com.bookstore&lt;/groupId&gt;
        &lt;artifactId&gt;BookStoreWebsite&lt;/artifactId&gt;
        &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
        &lt;build&gt;
            &lt;plugins&gt;
                &lt;plugin&gt;
                    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                    &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
                    &lt;configuration&gt;
                        &lt;source&gt;8&lt;/source&gt;
                        &lt;target&gt;8&lt;/target&gt;
                    &lt;/configuration&gt;
                &lt;/plugin&gt;
            &lt;/plugins&gt;
        &lt;/build&gt;
        &lt;dependencies&gt;
    
    
            &lt;dependency&gt;
                &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
                &lt;artifactId&gt;hibernate-core&lt;/artifactId&gt;
                &lt;version&gt;5.3.16.Final&lt;/version&gt;
                &lt;scope&gt;compile&lt;/scope&gt;
            &lt;/dependency&gt;
            &lt;dependency&gt;
                &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
                &lt;artifactId&gt;hibernate-c3p0&lt;/artifactId&gt;
                &lt;version&gt;6.0.0.Alpha5&lt;/version&gt;
                &lt;type&gt;pom&lt;/type&gt;
            &lt;/dependency&gt;
            &lt;dependency&gt;
                &lt;groupId&gt;mysql&lt;/groupId&gt;
                &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
                &lt;version&gt;5.1.45&lt;/version&gt;
                &lt;scope&gt;runtime&lt;/scope&gt;
            &lt;/dependency&gt;
            &lt;dependency&gt;
                &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
                &lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;
                &lt;version&gt;4.0.1&lt;/version&gt;
                &lt;scope&gt;provided&lt;/scope&gt;
            &lt;/dependency&gt;
            &lt;dependency&gt;
                &lt;groupId&gt;jstl&lt;/groupId&gt;
                &lt;artifactId&gt;jstl&lt;/artifactId&gt;
                &lt;version&gt;1.2&lt;/version&gt;
            &lt;/dependency&gt;
            &lt;dependency&gt;
                &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
                &lt;artifactId&gt;jsp-api&lt;/artifactId&gt;
                &lt;version&gt;2.0&lt;/version&gt;
                &lt;scope&gt;compile&lt;/scope&gt;
            &lt;/dependency&gt;
            
        &lt;/dependencies&gt;
    
    &lt;/project&gt;

Here is my persistence.xml:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;persistence xmlns=&quot;http://xmlns.jcp.org/xml/ns/persistence&quot;
             xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
             xsi:schemaLocation=&quot;http://xmlns.jcp.org/xml/ns/persistence
          http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version=&quot;2.1&quot;&gt;
    &lt;persistence-unit name=&quot;BookStoreWebsite&quot;&gt;
        &lt;properties&gt;
            &lt;property name = &quot;javax.persistence.jdbc.url&quot; value=&quot;jdbc:mysql://localhost:3306/bookstoredb&quot;/&gt;
            &lt;property name = &quot;javax.persistence.jdbc.user&quot; value=&quot;root&quot;/&gt;
            &lt;property name = &quot;javax.persistence.jdbc.password&quot; value=&quot;password&quot;/&gt;
            &lt;property name = &quot;javax.persistence.jdbc.driver&quot; value=&quot;com.mysql.jdbc.Driver&quot;/&gt;
            &lt;property name=&quot;hibernate.show_sql&quot; value = &quot;true&quot; /&gt;
            &lt;property name=&quot;hibernate.format_sql&quot; value = &quot;true&quot; /&gt;

            &lt;property name=&quot;hibernate.c3p0.min_size&quot; value=&quot;5&quot; /&gt;
            &lt;property name=&quot;hibernate.c3p0.max_size&quot; value=&quot;10&quot; /&gt;
            &lt;property name=&quot;hibernate.c3p0.timeout&quot; value=&quot;120&quot; /&gt;
            &lt;property name=&quot;hibernate.c3p0.max_statements&quot; value=&quot;50&quot; /&gt;
            &lt;property name=&quot;hibernate.c3p0.idle_test_period&quot; value=&quot;3000&quot; /&gt;
        &lt;/properties&gt;
    &lt;/persistence-unit&gt;

&lt;/persistence&gt;

Here is my directory:

Cannot start Tomcat Server in IntelliJ java.lang.ClassNotFoundException: javax.persistence.Persistence

I tried to google it but it didn't help. I tried to force delete maven dependencies from m2 folder and reimport it but it didn't work neither.

What is my mistake? Thank you!

huangapple
  • 本文由 发表于 2020年7月27日 04:32:51
  • 转载请务必保留本文链接:https://java.coder-hub.com/63105407.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定