求助:在eclipse上写的程序能运行,用exe4j生成exe文件出错,求解!!!

qiananlihp 2018-08-08 07:18:14
学习java中,在eclipse上写的程序,用spring+mybatis,通了,然后导出jar,用exe4j 生成exe文件,执行后报错。错误如下:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [mapper.MemberMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(type=class java.lang.Object, mappedName=, shareable=true, lookup=, authenticationType=CONTAINER, description=, name=)}
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:306)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1120)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:94)
at gui.main.MainFrame.initContext(MainFrame.java:106)
at gui.main.MainFrame.<init>(MainFrame.java:92)
at gui.login.LoginFrame$1.widgetSelected(LoginFrame.java:97)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
at gui.login.LoginFrame.open(LoginFrame.java:47)
at gui.login.LoginFrame.main(LoginFrame.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.exe4j.runtime.WinLauncher.main(Unknown Source)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [mapper.MemberMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(type=class java.lang.Object, mappedName=, shareable=true, lookup=, authenticationType=CONTAINER, description=, name=)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:949)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:818)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:730)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:438)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:416)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:550)
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:150)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:303)
... 28 more


我理解着应该是:因为service中注入了Mapper,我的Mapper只是接口,没有实现类,applicationContext中没有配置bean,可是mybatis不是不用写实现类么?
配置文件存放的位置问题吗?(传图片太慢,目录结果如下)
manager.jar
manager.exe
log4j.properties
SqlMapConfig.xml
db.properties
mybatis
--SqlMapConfig.xml
Spring
--applicationContext-*.xml
lib
img

求大神解惑!!

最后,都不知道这个问题是不是应该放在这个版块。。。
...全文
351 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mingyueyixi 2018-08-15
  • 打赏
  • 举报
回复
如果我没记错(很久以前了,不确定),exe4j转出来的exe实际上就是个jar,只是后缀变了。如果你的jar本来就不能跑,转成exe后也是不行的。
qiananlihp 2018-08-15
  • 打赏
  • 举报
回复
引用 3 楼 qq_35050756 的回复:
[quote=引用 2 楼 qiananlihp 的回复:]
[quote=引用 1 楼 qq_35050756 的回复:]
我以前似乎听同事说过这个问题 问题是打包之后的存放的路径和在调试的时候 不一样
那时候好像是在pom.xml里面设置一些参数就可以了


谢谢解答,pom.xml是maven项目的配置文件吗?还没学呢。。。我写的不是maven项目,按照您的思路又查了一些资料,但是按照那些方法似乎还是不行,我查到的方法是:在classpath后面加上*,即:classpath*:XXX/XXX/XX.xml,这样eclipse是出错的,然后导出后还是报错。

我获取applicationContext的方法如下:
String[] args = new String[] {
"spring/applicationContext-dao.xml",
"spring/ApplicationContext-service.xml",
"spring/ApplicationContext-transaction.xml" };
ApplicationContext actx = new ClassPathXmlApplicationContext(args);
这个似乎是没有问题的,找到了这些配置文件,配置sqlSessionFactory如下:
<!-- 加载mybatis的配置文件 -->
<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
SqlMapConfig.xml中配置了别名。似乎就有问题了,因为报错:原因是别名不识别,改为全限定名就可以了,然后又出现上面的错误。
用扫描mapper的方法获取mapper:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定扫描的包名
如果扫描多个包,每个包中间使用半角逗号分隔 -->
<property name="basePackage" value="mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
******我想问题应该是:没有找到SqlMapConfig.xml和*Mapper.xml文件。

还有一个情况是:我不用上面扫描mapper包的方法配置mapper,即在SqlMapConfig中配置Mappers,然后在applicationContext-dao.xml中配置mapper的bean,然后再service中添加mapper属性,是可以的,不过这样似乎就不适spring的依赖注入了。。。

求大神解惑。。。。
[/quote]

你可以把导出来的jar包用压缩工具打开看看 ,看看mapper位置在哪里,然后根据压缩包的文件结构,指定mapper扫描的路径。
还有就是 你这个是spring 还是spring boot[/quote]

是spring,不是spring boot.
我的jar包的结构是:manager.jar,解压后:
manager
--mapper
--memberMapper.xml
拉环的浪漫 2018-08-14
  • 打赏
  • 举报
回复
引用 2 楼 qiananlihp 的回复:
[quote=引用 1 楼 qq_35050756 的回复:]
我以前似乎听同事说过这个问题 问题是打包之后的存放的路径和在调试的时候 不一样
那时候好像是在pom.xml里面设置一些参数就可以了


谢谢解答,pom.xml是maven项目的配置文件吗?还没学呢。。。我写的不是maven项目,按照您的思路又查了一些资料,但是按照那些方法似乎还是不行,我查到的方法是:在classpath后面加上*,即:classpath*:XXX/XXX/XX.xml,这样eclipse是出错的,然后导出后还是报错。

我获取applicationContext的方法如下:
String[] args = new String[] {
"spring/applicationContext-dao.xml",
"spring/ApplicationContext-service.xml",
"spring/ApplicationContext-transaction.xml" };
ApplicationContext actx = new ClassPathXmlApplicationContext(args);
这个似乎是没有问题的,找到了这些配置文件,配置sqlSessionFactory如下:
<!-- 加载mybatis的配置文件 -->
<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
SqlMapConfig.xml中配置了别名。似乎就有问题了,因为报错:原因是别名不识别,改为全限定名就可以了,然后又出现上面的错误。
用扫描mapper的方法获取mapper:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定扫描的包名
如果扫描多个包,每个包中间使用半角逗号分隔 -->
<property name="basePackage" value="mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
******我想问题应该是:没有找到SqlMapConfig.xml和*Mapper.xml文件。

还有一个情况是:我不用上面扫描mapper包的方法配置mapper,即在SqlMapConfig中配置Mappers,然后在applicationContext-dao.xml中配置mapper的bean,然后再service中添加mapper属性,是可以的,不过这样似乎就不适spring的依赖注入了。。。

求大神解惑。。。。
[/quote]

你可以把导出来的jar包用压缩工具打开看看 ,看看mapper位置在哪里,然后根据压缩包的文件结构,指定mapper扫描的路径。
还有就是 你这个是spring 还是spring boot
qiananlihp 2018-08-14
  • 打赏
  • 举报
回复
引用 1 楼 qq_35050756 的回复:
我以前似乎听同事说过这个问题 问题是打包之后的存放的路径和在调试的时候 不一样
那时候好像是在pom.xml里面设置一些参数就可以了


谢谢解答,pom.xml是maven项目的配置文件吗?还没学呢。。。我写的不是maven项目,按照您的思路又查了一些资料,但是按照那些方法似乎还是不行,我查到的方法是:在classpath后面加上*,即:classpath*:XXX/XXX/XX.xml,这样eclipse是出错的,然后导出后还是报错。

我获取applicationContext的方法如下:
String[] args = new String[] {
"spring/applicationContext-dao.xml",
"spring/ApplicationContext-service.xml",
"spring/ApplicationContext-transaction.xml" };
ApplicationContext actx = new ClassPathXmlApplicationContext(args);
这个似乎是没有问题的,找到了这些配置文件,配置sqlSessionFactory如下:
<!-- 加载mybatis的配置文件 -->
<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
SqlMapConfig.xml中配置了别名。似乎就有问题了,因为报错:原因是别名不识别,改为全限定名就可以了,然后又出现上面的错误。
用扫描mapper的方法获取mapper:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定扫描的包名
如果扫描多个包,每个包中间使用半角逗号分隔 -->
<property name="basePackage" value="mapper" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
******我想问题应该是:没有找到SqlMapConfig.xml和*Mapper.xml文件。

还有一个情况是:我不用上面扫描mapper包的方法配置mapper,即在SqlMapConfig中配置Mappers,然后在applicationContext-dao.xml中配置mapper的bean,然后再service中添加mapper属性,是可以的,不过这样似乎就不适spring的依赖注入了。。。

求大神解惑。。。。
拉环的浪漫 2018-08-10
  • 打赏
  • 举报
回复
我以前似乎听同事说过这个问题 问题是打包之后的存放的路径和在调试的时候 不一样
那时候好像是在pom.xml里面设置一些参数就可以了
内容概要:本文介绍了一种基于双向DC-DC变换器的储能电池SOC(State of Charge,荷电状态)充放电双模式Simulink仿真模型,旨在实现对储能系统在充电和放电两种工况下的精确建模与动态控制。仿真系统结合了电力电子变换器的拓扑结构与电池等效电路模型,通过闭环控制策略实时调节充放电电流,确保电池工作在安全高效的SOC区间内。模型充分考虑了能量双向流动特性,支持能量回馈与吸收,适用于微电网、电动汽车及可再生能源系统中的能量管理场景。通过仿真可验证控制算法的有效性,优化系统动态响应与能量利用效率。; 适合人群:具备电力电子、自动控制及新能源系统基础知识,从事电气工程、自动化、能源系统等相关领域的科研人员与工程技术人员,尤其适合研究生及从事储能系统仿真与控制开发的工程师。; 使用场景及目标:①研究储能系统在微电网中的能量调度与平抑功率波动能力;②验证双向DC-DC变换器在电池充放电切换过程中的稳定性与效率;③优化基于SOC反馈的充放电控制策略,防止过充过放,延长电池寿命;④为实际储能系统控制器设计提供仿真验证平台。; 阅读建议:建议结合Simulink模型文件与控制算法说明文档同步学习,重点关注变换器控制逻辑、SOC估算模块与充放电模式切换机制,可通过调整参数进行对比仿真,深入理解系统动态特性与控制性能。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 在Microsoft的视窗系统中,有时我们需要确认文件的完整性与一致性,这时MD5校验和显得十分关键。MD5(Message-Digest Algorithm 5)是一种被广泛应用的哈希函数,它能够将文件数据转化为固定长度的数字性摘要,一般表现为32位的16进制数值。该种摘要对于文件内容具有独特性,即便文件内容有微小的改动,MD5数值也会发生显著变化。接下来将具体阐述在Microsoft视窗的命令行环境中如何运用`md5sum`软件来计算文件的MD5数值。1. **MD5的本质及其应用** MD5是一种哈希技术,主要应用于数据完整性验证,例如在下载文件后核实其与原始文件是否一致,或在密码存储时进行单向加密处理。尽管MD5的防护能力已无法满足高安全级别的需求,但在文件完整性验证方面仍然被广泛采用。2. **Microsoft视窗中的`md5sum`软件** 在Linux系统中,`md5sum`命令是系统自带的,而在Microsoft视窗系统中则需要额外进行安装。用户可以下载适用于Microsoft视窗的`md5sum`软件,比如GnuWin32项目提供的版本。安装完成后,`md5sum.exe`会被添加至系统的PATH环境变量中,从而可以在命令行界面中直接使用。3. **`md5sum`软件的使用方法** 在命令行提示符(通过按Win + R键,输入`cmd`后按下回车键)中,输入下列格式的指令来计算文件的MD5数值: ``` md5sum 文件路径 ``` 举例来说,若要计算名为`example.txt`的文件的MD5数值,指令应为: ``` md5sum example...

58,443

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧