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

Windows服务中的SQLSessionFactory引发NullPointerException

尚阳炎
2023-03-14

当我从命令行(java-jar forward.jar)运行我的应用程序时,一切都正常工作,不会抛出异常。但是,当运行与windows服务相同的应用程序时,我会得到NullPointerException。

19.06.2014 14:44:46.442[DefaultListableBeanFactory][AbstractBeanFactory.java][DEBUG][Thread-0]忽略FactoryBean类型检查:org.springframework.beans.factor.unsatisfiedDependencyException:创建URL中定义的名为“Phone NumberRepository”的bean时出错[jar:file:/c:/forward.jar!/com/forward/persistence/db/PhoneNumberRepository.class]:通过URL中定义的bean属性“SQL SessionFactory”表示嵌套异常是java.lang.NullPointerException;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建URL[jar:file:/c:/prem-forward.jar!/mybatis-context.xml]中定义的名为“SQL SessionFactory”的bean时出错:调用init方法失败;嵌套异常是java.lang.NullPointerException

后来呢

原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到依赖项得[com.forward.persistence.db.PhoneNumberRepository]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖项注释:{@org.springframework.beans.factory.annotation.AutoWired(required=true)}(位于org.springframework.beans.factory.support.defaultlistablebeanfactory.raisenosuchbeandefinitionexception(defaultlistablebeanfactory.java:988)~[spring-beans-3.2.4.release.jar:3.2.4.release](位于

这是我的mybatis-context.xml定义:

<import resource="classpath*:datasource-context.xml"/>

<mybatis:scan base-package="com.forward.persistence.db" />

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="typeAliasesPackage" value="com.forward.model"/> <!-- Register the short names of beans as aliases -->
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

<!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.forward.persistence.db" />
</bean>

更新:PhoneNumberRepository.xml的定义如下

<?xml version="1.0" encoding="UTF-8"?>
<resultMap type="com.forward.model.PhoneNumber" id="phoneMap">
    <result column="number" property="number"/>
    <result column="partition" property="partition"/>
</resultMap>

<select id="findAll"  resultMap="phoneMap">
    SELECT *
    FROM PhoneNumber
    ORDER BY number;
</select>

MyBatis将interphace PhoneNumberRepository映射到这个.xml文件以创建bean。

共有1个答案

秦琦
2023-03-14

问题是Java服务在部署机器和编译项目的本地机器上是不同的。

 类似资料:
  • 授予codeBase“file:/home/rozerin/ideaprojects/computetest/src/main/java/”{permission java.security.allpermission;}; 堆栈跟踪是; ComputeEngine异常:java.security.AccessControllException:在java.security.AccessContr

  • SOFARPC 的服务发布和引用的基本配置已经在「编程界面」章节中说明,这里主要介绍服务发布和引用的一些特性。 同一服务发布多种协议 在 SOFARPC 中,可以将同一个服务发布成多个协议,让调用端可以使用不同的协议调用服务提供方。 如果使用 Java API,可以按照如下的代码构建多个 ServerConfig,不同的 ServerConfig 设置不同的协议,然后将这些 ServerConfi

  • 在单体架构时,因为服务不会经常和动态迁移,所有服务地址可以直接在配置文件中配置,所以也不会有服务发现的问题。但是对于微服务来说,应用的拆分,服务之间的解耦,和服务动态扩展带来的服务迁移,服务发现就成了微服务中的一个关键问题。 服务发现分为客户端服务发现和服务端服务发现两种,架构如下图所示。 这两种架构都各有利弊,我们拿客户端服务发现软件Eureka和服务端服务发现架构Kubernetes/SkyD

  • 问题内容: 我正在努力为Windows 2008 R2 Server上的logstash转发器创建Windows服务。 我的设置如下所示: Ubuntu Server 14.04 LTS elasticsearch Logstash 基巴纳 Windows Server 2008 R2: 应用程序记录到特定路径。 通过Logstash-forwarder将日志发送到ELK堆栈 我目前正在按照此处的

  • 问题内容: 代码就是这样 这在Linux系统上运行良好,但在Windows上却无法运行。其显示EOFError。我必须使用模式才能使其在Windows上运行。 为什么会发生这种情况,以及如何解决? 问题答案: 读取和写入泡菜时始终使用模式(用于写入和读取)。要“修复”现有文件,请使用转换其换行符。

  • SOFABoot 提供三种方式给开发人员发布和引用 JVM 服务 XML 方式 Annotation 方式 编程 API 方式 XML 方式 服务发布 首先需要定义一个 Bean: <bean id="sampleService" class="com.alipay.sofa.runtime.test.service.SampleServiceImpl"> 然后通过 SOFA 提供的 Sprin