求助:在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

求大神解惑!!

最后,都不知道这个问题是不是应该放在这个版块。。。
...全文
359 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里面设置一些参数就可以了
内容概要:本文聚焦于“改进的中点电位平衡策略:基于最优零序电压注入法的二极管钳位型NPC三电平拓扑中点电位平衡仿真”,旨在复现IEEE顶刊提出的先进控制策略,解决三电平NPC变流器中存在的中点电位不平衡问题。通过Simulink仿真平台,系统地实现了最优零序电压注入法,该方法在不增加额外硬件成本的前提下,有效抑制中点电位偏移,提升系统稳定性与输出电能质量。内容涵盖中点电位波动的机理分析、零序电压的数学建模与注入策略设计、仿真模型构建及实验结果验证,完整呈现了从理论分析到仿真实践的研究闭环,突出其在高性能变流器控制中的工程应用价值。; 适合人群:具备电力电子、自动控制及电力系统相关基础知识的研究生、科研人员和工程技术人员,特别适用于从事新能源发电、电机驱动、电力变换器控制等领域的研究人员,以及致力于高水平学术论文复现与先进拓扑控制策略开发的专业人士。; 使用场景及目标:①深入理解三电平NPC变流器中点电位不平衡的产生机理及其对系统性能的影响;②掌握基于最优零序电压注入的中点电位控制策略的设计原理与实现流程;③复现并验证IEEE顶刊研究成果,服务于科研项目攻关、高质量论文撰或教学实验设计。; 阅读建议:建议结合提供的Simulink仿真模型进行同步学习,重点关注零序电压的计算逻辑、注入方式及其对中点电位的动态调节效果,可通过对比不同调制策略(如SVPWM、SPWM)下的控制性能,进一步优化算法参数,或将其拓展应用于其他多电平拓扑结构中进行验证与创新。

58,442

社区成员

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

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