Render401 2019-04-15 10:04 采纳率: 0%
浏览 628

HTTP Status 500 - Servlet.init() for servlet viewspace threw exception type Exception report

因为要求命名规范,所以我将IServiceImpl.java文件直接改名为SubServiceImpl,运行时报出500错误,在网上查了说是tomcat的问题,但是我将配置弄好之后依旧是这个问题。烦请解答。
项目结构如下:
图片说明

网页报错内容:

HTTP Status 500 - Servlet.init() for servlet viewspace threw exception
type Exception report

message Servlet.init() for servlet viewspace threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet viewspace threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)
root cause

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'subServiceImpl': Unsatisfied dependency expressed through field 'subDAO': No qualifying bean of type [org.alex.samples.dao.ISubDAO] is defined: expected single matching bean but found 2: subDAOImpl,SubDAOImpl; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.alex.samples.dao.ISubDAO] is defined: expected single matching bean but found 2: subDAOImpl,SubDAOImpl
    org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
    org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:776)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)
root cause

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.alex.samples.dao.ISubDAO] is defined: expected single matching bean but found 2: subDAOImpl,SubDAOImpl
    org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:172)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1065)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1019)
    org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
    org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:776)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)
note The full stack trace of the root cause is available in the Apache Tomcat/9.0.0.M17 logs.

Apache Tomcat/9.0.0.M17

SubServiceImpl.java代码内容

package org.alex.samples.service;

import java.util.List;

import org.alex.samples.dao.ISubDAO;
import org.alex.samples.model.Sub;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class SubServiceImpl implements ISubService {

    @Autowired
    private ISubDAO subDAO;

    @Override
    public List<Sub> findAllSubs() {
        return subDAO.findAllSubs();
    }

    @Override
    public void createSub(Sub sub) throws Exception{
         subDAO.createSub(sub);
    };

    @Override
    public void editSub(Sub sub) throws Exception{
        subDAO.editSub(sub);
    }   

    @Override
    public void deleteSub(int id){
        subDAO.deleteSub(id);
    }

    @Override
    public Sub getSubById(int id) {
        return subDAO.getSubById(id);
    }
}

SubDAOImpl.java代码内容

package org.alex.samples.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.alex.samples.model.Sub;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

@Repository
public class SubDAOImpl implements ISubDAO{

    static final String SQL_SELECT_SUBJECT = "select * from exam_subject";
    static final String SQL_INSERT_SUBJECT = "insert exam_subject(sub_id,name,description,test_count,total_time,total_score,status) value(?,?,?,?,?,?,?)";
    static final String SQL_SELECT_SUBJECT_BYID = "select * from exam_subject where sub_id = ?";
    static final String SQL_UPDATE_SUBJECT = "update exam_subject set name = ?,description = ?,test_count = ?,total_time = ?,total_score = ?,status =? where sub_id = ?";
    static final String SQL_DELETE_SUBJECT = "delete from exam_subject where sub_id = ?";

    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    private static final class subMapper implements RowMapper<Sub> {
        public Sub mapRow(ResultSet rs, int num) throws SQLException {
            Sub sub = new Sub();
            sub.setSubID(rs.getInt("sub_id"));
            sub.setSubName(rs.getString("name"));
            sub.setDescription(rs.getString("description"));
            sub.setTestCount(rs.getInt("test_count"));
            sub.setTotalTime(rs.getInt("total_time"));
            sub.setTotalScore(rs.getDouble("total_score"));
            sub.setStatus(rs.getInt("status"));
            return sub;
        }
    };

    @Override
    public List<Sub> findAllSubs() {
        return jdbcTemplate.query(SQL_SELECT_SUBJECT, new subMapper());
    }

    @Override
    public void createSub(Sub sub) throws Exception {
        if (sub != null && getSubById(sub.getSubID()) == null) {
            jdbcTemplate.update(SQL_INSERT_SUBJECT,new Object[] {sub.getSubID(),sub.getSubName(),sub.getDescription(),
            sub.getTestCount(),sub.getTotalTime(), sub.getTotalScore(),sub.getStatus()});
        }
    }

    @Override
    public void editSub(Sub sub) throws Exception {
        jdbcTemplate.update(SQL_UPDATE_SUBJECT, new Object[] {sub.getSubName(),sub.getDescription(),sub.getTestCount(),
        sub.getTotalTime(), sub.getTotalScore(),sub.getStatus(),sub.getSubID()});
    }

    @Override
    public void deleteSub(int id) {
        jdbcTemplate.update(SQL_DELETE_SUBJECT, new Object[] { id });
    }

    @Override
    public Sub getSubById(int id) {
        List<Sub> sub = jdbcTemplate.query(SQL_SELECT_SUBJECT_BYID, new Object[] { id }, new subMapper());
        if(sub != null && sub.size() > 0){
                return sub.get(0);
        }
        return null;
    }
}
  • 写回答

2条回答 默认 最新

  • Arthur_ZBY 2019-04-15 10:13
    关注

    在subServiceImpl里面改一下subDAOImpl或SubDAOImpl的引用

    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿