Java 如何指定WireMock映射和可执行SpringBootJAR中存在的文件的路径?

Java 如何指定WireMock映射和可执行SpringBootJAR中存在的文件的路径?,java,spring,spring-boot,wiremock,wiremock-standalone,Java,Spring,Spring Boot,Wiremock,Wiremock Standalone,我已经使用“SpringCloudContract WireMock”依赖项将WireMock构建为spring启动应用程序。 我将映射和_文件保存在src/test/resources文件夹中 当我从IDE运行应用程序时,它工作得非常好。但是当我直接运行Jar时,它会给出一个fileNotFoundException <pre>java.lang.RuntimeException: java.io.FileNotFoundException: C:\Users\{user}\Dow

我已经使用“SpringCloudContract WireMock”依赖项将WireMock构建为spring启动应用程序。 我将映射和_文件保存在src/test/resources文件夹中

当我从IDE运行应用程序时,它工作得非常好。但是当我直接运行Jar时,它会给出一个fileNotFoundException

<pre>java.lang.RuntimeException: java.io.FileNotFoundException: C:\Users\{user}\Downloads\src\test\resources\__files\....
主要类别:

    public Options wireMockOptions() throws IOException {

        final WireMockConfiguration options = WireMockSpring.options();
        options.usingFilesUnderDirectory("classpath*:");
        options.port(9990);

        return options;
    }

如何指定_文件和映射的路径,以便可以从任何位置独立运行?

您可以使用以下选项之一更改WireMock查找
/mappings
/_文件的路径:


我承认我没有将WireMock与Spring一起使用,因此这里的情况可能会有点不同。

您可以使用以下方法之一更改WireMock查找
/mappings
/\uu文件的路径


我承认我没有将WireMock与Spring一起使用,因此这里的情况可能会有所不同。

如果您只是正常运行应用程序,那么将找不到测试资源,因为它们通常不包含在生成的jar文件中。测试或实际运行应用程序需要Wiremock吗?如果是后者,则需要将文件移动到正常的资源路径“src/main/resources”中。

如果您只是正常运行应用程序,将找不到测试资源,因为它们通常不包含在生成的jar文件中。测试或实际运行应用程序需要Wiremock吗?如果是后者,则需要将文件移动到正常的资源路径“src/main/resources”中。

谢谢大家的建议

我能够通过在我的主课中添加以下内容来实现它

SpringClasspathResourceFileSource是实现FileSource接口的普通类。
“stub”是我在src/main/resources中创建的文件夹。fileSource对象已从应用程序的类路径返回文件夹的uri。

感谢大家的建议

我能够通过在我的主课中添加以下内容来实现它

SpringClasspathResourceFileSource是实现FileSource接口的普通类。
“stub”是我在src/main/resources中创建的文件夹。fileSource对象已从应用程序的类路径返回文件夹的uri。

您是否注意到错误中您的应用程序正在访问测试文件夹
\src\test\resources`这可能是问题的一部分,通常在正常运行期间
\src\main\resources`应该被访问。显然,src/test/resources是WireMockConfiguration类用于查找映射的默认位置。我必须通过设置文件源来覆盖默认值。您是否注意到错误中您的应用程序正在访问测试文件夹
\src\test\resources`这可能是问题的一部分,通常在正常运行期间
\src\main\resources`应该被访问。显然,src/test/resources是WireMockConfiguration类用于查找映射的默认位置。我必须通过设置文件源来覆盖默认值。
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    
    @Bean
    public Options wireMockOptions() throws IOException {

        final WireMockConfiguration options = WireMockSpring.options();
        //options.withRootDirectory("classpath*:");
        options.port(9990);

        return options;
    }

}
    public Options wireMockOptions() throws IOException {

        final WireMockConfiguration options = WireMockSpring.options();
        options.usingFilesUnderDirectory("classpath*:");
        options.port(9990);

        return options;
    }
FileSource fileSource = new SpringClasspathResourceFileSource("stub");
options.fileSource(fileSource);