当前位置: 首页 > 知识库问答 >
问题:

Tomcat无法启动并生成java。util。同时发生的ExecutionException,如下所示,一旦我初始化了web。带有侦听器类的xml

闾丘文昌
2023-03-14

给定错误:

信息:启动服务Catalina Feb 15,2016 2:23:09 PMorg.apache.catalina.core.标准引擎启动内部信息:启动Servlet引擎:Apache Tomcat/8.0.23 Feb 15,2016 2:23:09 PMorg.apache.catalina.util.SessionIdGeneratorBase createSecureRandom信息:为会话ID生成创建SecureRandom实例使用[SHA1PRNG]需要[116]毫秒。Feb 15,2016 2:23:09 PMorg.apache.catalina.core.ContainerBase启动内部严重:一个子容器在启动期间失败java.util.concurrent.执行异常:org.apache.catalina.生命周期异常:无法启动组件[标准引擎[Catalina]。localhost。标准上下文[/故事板]]java.util.concurrent.FutureTask.report(FutureTask.java:122)java.util.concurrent.FutureTask.get(FutureTask.java:192)org.apache.catalina.core.ContainerBase.start内部(ContainerBase.java:917)在org.apache.catalina.core.标准ost.start内部(标准ost.java:871)在org.apache.catalina.util.生命周期ase.start(生命周期库. java: 150)在org. apache. catalina. core。ContainerBase$StartChild. call(ContainerBase. java: 1409)在org. apache. catalina. core。ContainerBase$StartChild. call(ContainerBase. java: 1399)at java. util. con当前。FutureWork. run(FutureTasks. java: 266)at java. util. con当前。ThreadPoolExecutor. runWorker(ThreadPoolExecutor. java: 1142)在java. util. con当前。在java. lang上运行(ThreadPoolExecator. java: 617)。线程. run(Thread. java: 745)引起:org. apache. catalina.无法启动组件[Standard ardEngine[Catalina]。[本地主机].标准上下文[/故事板]]at org. apache. catalina. util.6更多原因:java. lang.NoClassDefFoundError:java. lang的com/j256/omlite/support/ConnectionSource。在java. lang的class. getDeclaredFields0(本机方法)。在java. lang.在org. apache. catalina. util上的class. getDeclaredFields(Class. java: 1908)。在org. apache. catalina. startup.在org. apache. catalina. startup上的WebAnnoationSet. loadFieldsAnnoation(WebAnnoationSet. java: 256)。在org. apache. catalina. startup上的WebAnnotationSet. loadApplication ationListenerAnnotions(WebAnnotationSet. java: 86)。在org. apache. catalina. startup.上的WebAnnotationSet. loadApplication ationAnnotions(WebAnnotationSet. java: 63)。ContextConfig(ContextConfig. java: 334)at org. apache. catalina. startup.ContextConfig. configureStart(ContextConfig. java: 774)at org. apache. catalina. startup。在org. apache. catalina. util.上的ContextConfig. life(ContextConfig. java: 305)。在org. apache. catalina. util.上的lifeycleSupport. fire Lifeycle事件(LifeycleSupport. java: 117)。在org. apache. catalina. core上的lifeycleBase. fire Lifeycle事件(LifeycleBase. java: 90)。在org. apache. catalina. utila上的标准内容。6更多原因:java. lang.ClassNotFoundExcema: com. j256. mplite. support.ConnectionSource at org. apache. catalina. loader。在org. apache. catalina. loadClass(WebappClassLoaderBase. java: 1305)。WebappClassLoaderBase. loadClass(WebappClassLoaderBase. java: 1157)...20 more

网状物xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<servlet>
<servlet-name>UploadImage</servlet-name>
<servlet-class>com.home.storyboard.UploadServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>UploadCanvas</servlet-name>
<servlet-class>com.home.storyboard.UploadCanvas</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadImage</servlet-name>
<url-pattern>/uploadimage</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>UploadCanvas</servlet-name>
<url-pattern>/uploadcanvas</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>StoryServlet</servlet-name>
<servlet-class>com.home.storyboard.StoryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StoryServlet</servlet-name>
<url-pattern>/StoryServlet</url-pattern>
</servlet-mapping>
<listener>
   <description>ServletContextListener</description>
   <listener-class>com.home.storyboard.StartupListener</listener-class>
</listener>
<welcome-file-list> 
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

StartupListener

package com.home.storyboard;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.jdbc.JdbcConnectionSource;
import java.sql.SQLException;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.home.storyboard.DAOdb;


public class StartupListener implements ServletContextListener{
private final static String DATABASE_URL = "jdbc:sqlite:testdb.db"; 

ConnectionSource connectionSource = null;

@Override
public void contextInitialized(ServletContextEvent sce) {
    try {
        // create our data-source for the database
        connectionSource = new JdbcConnectionSource(DATABASE_URL);
        DAOdb db = new DAOdb(connectionSource);
        sce.getServletContext().setAttribute("db", db);

        }catch(SQLException e){
            System.out.println(e.getMessage());
        }
 }

@Override
public void contextDestroyed(ServletContextEvent sce) {
    // destroy the data source which should close underlying connections

    DAOdb db = (DAOdb)sce.getServletContext().getAttribute("db");
    db.close();
 }
 }

DAOdb类

package com.home.storyboard;
import java.sql.SQLException;
import java.util.List;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.dao.GenericRawResults;
import com.j256.ormlite.table.TableUtils;
import com.j256.ormlite.support.ConnectionSource;

 public class DAOdb {

// we are using the in-memory H2 database
private final ConnectionSource connectionSource;
private Dao<User, Integer> userDAO;
private Dao<Profile,Integer> profileDAO;
private Dao<Story, Integer> storyDAO;
private String lastError;

public DAOdb(ConnectionSource connectionSource){
    this.connectionSource=connectionSource;
    try{
    userDAO = DaoManager.createDao(connectionSource, User.class);
    TableUtils.createTable(connectionSource, User.class);
    profileDAO = DaoManager.createDao(connectionSource, Profile.class);
    TableUtils.createTable(connectionSource, Profile.class);
    storyDAO = DaoManager.createDao(connectionSource, Story.class);
    TableUtils.createTable(connectionSource, Story.class);
    }catch(SQLException e){
        lastError = e.getMessage().toString();
    }
}

/**
 * DAO Functions to fetch data
 */

 public void addStory(Story S) {
     try{
         storyDAO.create(S);
         lastError = null;
        } catch (Exception e) {
            lastError = e.getMessage().toString();
        }
    }

 public List<Story> getStoriesbyUsername(String username) {
     String uname =username;
     List<Story> storyList = null;
     User user = getUserbyUsername(uname);
     Integer uid =user.getId();
     try{
        GenericRawResults<String[]> stories = storyDAO.queryRaw(
                "select count(*) from stories where userid = uid");
            // there should be 1 result
            List<String[]> results = stories.getResults();
            // the results array should have 1 value
            Integer usercount = results.size();
            // this should print the number of orders that have this account-id
            if(usercount<=0){
                lastError="'No story exists by username'+' '+ username";
              }else{
                 storyList = storyDAO.queryBuilder()
                             .where()
                             .eq(Story.USERID_FIELD_NAME, uid)
                             .query();
              }
            }catch(SQLException e){
                lastError = e.getMessage().toString();
            }

      return storyList;
    }
 }

共有2个答案

元阳荣
2023-03-14

在Java JRE的lib/ext文件夹中上载Ormlite core和Ormlite jdbc JAR后,类未找到异常得到解决。这不是最佳解决方案。但就目前而言,它对我有效。

薛华奥
2023-03-14

你的问题太长太复杂了。其重要部分是由异常引起的:

JAVAlang.ClassNotFoundException:com。j256。奥姆利特。支持连接源位于。。。

由于某些原因,您的应用程序没有ConnectionSource类。也许您没有同时包括ORMLite JDBC和core jar?请确保遵循入门文档中的说明:

通过JDBC连接连接到SQL数据库的用户需要下载ormlite-jdbc-4.48.jar和ormlite-core-4.48.jar文件。对于与Android应用程序一起使用,您应该下载ormlite-android-4.48.jar和ormlite-core-4.48.jar文件。对于JDBC或Android,您还需要具有ORMLite后端实现的ORMLite核心版本。

如果您使用的是war,请找到jar位置,并确保两个ORMLite jar都在那里。如果你的应用程序中已经有了内核,那么我不确定到底出了什么问题。

希望这有帮助。

 类似资料:
  • 所以我最近在我的win10 PC上安装了eclipse,并创建了一个公共类。代码如下: 接下来,显示了一个错误: 然后,我删除了info.java文件,并显示以下错误: 我能做些什么来解决这个问题?

  • 问题内容: 静态字段何时初始化?如果我从不实例化一个类,而是访问一个静态字段,那么用于实例化私有静态字段的所有静态块和私有静态方法是否在那个瞬间被调用(按顺序)? 如果我调用静态方法怎么办?它也运行所有静态块吗?之前的方法? 问题答案: 类的静态初始化通常在以下事件之一首次发生之前立即发生: 创建该类的实例, 该类的静态方法被调用, 分配了该类的静态字段, 使用了非恒定静态字段,或者 对于顶级类,

  • 问题内容: 我开始全新复制WSO2 API Manager 1.8,并无缘无故出现以下错误。 我怎样才能解决这个问题? 问题答案: 通过运行以下命令检查系统主机名 尝试ping到该主机名的输出。 如果那给出了错误,请检查文件。至少它应该具有主机条目127.0.0.1

  • 我在父类和子类中都有构建器。父对象有一个抽象生成器和一个扩展抽象生成器的具体生成器。子级有一个扩展父级抽象生成器的抽象生成器和一个扩展子级抽象生成器的具体生成器。原因是父级的setter返回当前的Builder类。我有一些方法返回类自己的抽象构建器类型,我想将其称为父抽象类型(调用它的父方法)。我所能做的就是

  • 我有一个由Quarkus添加到构建时初始化的第三方类,但由于静态线程使用,它需要运行时初始化。将其添加到运行时初始化本机构建时,会抱怨它同时存在于这两个版本中。 重新生成此文件的示例项目:https://github.com/hshorter/quarkus-avro-decode-example 使用“--initialize-at-run-time=org.apache.avro.specif

  • 我刚下载了这个项目: 但当我尝试使用推荐的命令运行服务器时: 我得到以下输出: 如你所见,有一行是这样写的: