我们的程序正在发送邮件。对于发送邮件,它包括一个附件。
该项目是使用maven设置的。JUnit测试用例首先加载Spring配置。Spring正在使用其DefaultResourceLoader加载文件。当直接在工作区内运行它时,它运行正常,但是作为maven测试它失败了。
资源加载器的Spring配置:
<property name="defaultResourceLoader">
<bean class="org.springframework.core.io.DefaultResourceLoader" />
</property>
实现类:
@Service
public class SomeClassA {
@Autowired
private DefaultResourceLoader defaultResourceLoader;
@Value("${mailLogoPath}")
private String mailLogo;
public void someMethod(){
String filePath = defaultResourceLoader.getResource(mailLogo).getFile().getAbsolutePath();
}
}
例外情况指向实际问题和差异:
java.io.FileNotFoundException:类路径资源[模板/efmaillogo.jpg]无法解析为绝对文件路径,因为它不驻留在文件系统中:jar: file:/C:/IBM /workspace/efMy10/ef-mvxsrv-reactor/ef-mvxsrv-service-resources/target/ef-mvxsrv-service-resources-1.5.23-SNAPSHOT.jar! /templates/efmaillogo.jpgorg.springframework.util.ResourceUtils.getFile(ResourceUtils.java:204)atorg.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52)at某个ClassA.某样方法
Spring尝试在jar中查找文件。当在eclipse中将其作为jUnit测试运行时,一切都在工作,因为Spring直接在工作区中找到文件。然而,当使用maven运行相同的单元测试时,它失败了,因为它没有找到文件,因为它在不同模块的jar中。另一个模块中的文件是不同模块需要的,所以我不想移动它。在部署一切的应用程序服务器上,它也可以工作,因为. ears文件是扩展的。
我想知道是否有其他方法可以使用Spring访问该文件,这样我就不必跳过maven的这个测试用例。
Update尝试使用以下内容查找文件:
String filePath = defaultResourceLoader.getResource(mailLogo).getURL.getFile();
然而,当实际使用传输发送邮件时,它现在失败了。发送(消息)
。
java.io.FileNotFoundException: file:\C:\User\uhe. m2\repository\com\clavisit\ef\mvxsrv\ef-mvxsrv-service-resources-1.5.23-SNAPSHOT\ef-mvxsrv-service-resources-1.5.23-SNAPSHOT. jar!\temals\efmaillogo.jpg(文件名、目录名或卷标语法不正确。)com.sun.mail.smtp.SMTPTransport.send消息(SMTPTransport.java:1141)在javax.mail.Transport.send0(Transport.java:195)在javax.mail.Transport.send(Transport.java:124)在com.clavisit.ef.ep.service.integration.handler.mail.SendMail.send消息(SendMail.java:153)
字符串filePath=defaultResourceLoader。getResource(mailLogo)。getURL()。getFile();
上述代码更改必须按照本线程中的讨论进行http://www.coderanch.com/t/474047/Spring/Spring-cannot-find-file-classpath
问题内容: 当我使用命令:mvn test时,maven使用主要资源而不是src / test / resources中的测试资源。 我如何才能使Maven使用测试资源而不是主要资源? 编辑:我使用Classloader查找我的资源。Classloader可以从我的src / test / resources目录中找到资源,但是它首先在src / main / java中查找该资源。 还是在运行将
我有一个与Hibernate集成的Spring Boot应用程序,用于数据库持久性。 null 我怎么能那么做? 谢了。
问题内容: 使用和我可以进入有问题的等待线程,但不知道如何对其进行故障排除或造成此故障的原因。参见下面的Maven依赖项和结果以及带有的等待线程。进一步分析,对于所选版本,Eclipselink和hsqldb之间似乎存在问题。由于升级这两个库而导致出现此问题,因为它们以前分别适用于Eclipselink和hsqldb的2.0.1和1.8.0.10版本。 而堆栈跟踪是: 问题答案: 确实确实看起来像
我一直在搜索一个完整的示例with try-with-Resources.我感到困惑,如果关闭也关闭了对象,当我调用时将创建该对象。我是否需要包装在一个try与资源? 示例:
我使用数据提供者方法和测试方法(测试方法中带有ITestContext参数)。一个简化的例子如下: 我的Retry类和RetryListener类如下: } 预期:当测试失败时,TestNG调用重试,然后数据提供程序应将相同的值返回给测试方法。 观察到:数据提供者返回相同的值,但测试方法没有运行,重试终止,下一个测试开始(数据提供者现在将返回新值) 但我的重试没有输入测试方法(测试方法不需要(in
使用maven对Spring应用程序进行单元测试后,在完成构建时遇到问题。我注意到mvn安装没有完成,在运行了所有单元测试之后,它似乎挂起了。如果运行我将从cmd行获得要完成的测试,但构建挂起 这就是它的结尾。两个线程正在运行,不确定我在那里做了什么。无论如何,为了排除故障,我删除了所有测试并让程序完全构建。如果我运行,我就可以完成它。最后,我添加了一个JUnit测试,它本质上是一个system.