本地主机上的Tomcat服务器无法启动

时间:2020-04-21 12:23:44

标签: java maven tomcat servlets

我正在尝试在Eclipse IDE的Maven项目中编写一个简单的登录页面Web应用程序。我已经包括了对mysql-connector的Maven依赖关系,如下所示:

<dependencies>
    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0.15</version>
       <scope>compile</scope>
    </dependency>
</dependencies>

但是,每当我尝试运行服务器时,都会收到Tomcat服务器无法启动的错误。但是,当我将依存关系的范围从编译更改为如下所示时

<dependencies>
    <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0.15</version>
       <scope>provided</scope>
    </dependency>
</dependencies>

tomcat服务器运行得很好,但是当我尝试从数据库中调用获取值时,出现以下错误

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
     at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
     at java.base/java.lang.Class.forName0(Native Method)
     at java.base/java.lang.Class.forName(Class.java:333)
     at com.myfirstApp.checkDB.checklogin(checkDB.java:17)
     at com.myfirstApp.MyServlet.doGet(MyServlet.java:40)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
     ...

我无法理解maven如何使用依赖项的正确流程,为什么我遇到找不到类的错误,以及为什么在范围编译时服务器无法启动。

我阅读了先前的答案,并尝试运行具有“提供的”依赖项范围的代码,并将jar文件包含在tomcat服务器的lib文件夹中,但仍然出现未找到相同类的错误。

编辑1:将范围设置为编译时,出现以下错误

Tomcat error

并且将范围设置为提供时,在以下代码的第一行出现错误

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,user,pass);
PreparedStatement st = con.prepareStatement(query); 

编辑2 在使用范围将服务器作为编译启动服务器时遇到的错误

SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@7a1a3478]
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474)
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@7a1a3478]
   ... 

完整的错误报告可以找到here

0 个答案:

没有答案