Не удалось открыть ресурс ServletContext в загрузочном приложении Spring - PullRequest
0 голосов
/ 04 февраля 2019

Я создал весеннее загрузочное приложение, которое будет подключаться к облачному пабу Google / sub и получать данные из темы.Для аутентификации я добавил это свойство spring.cloud.gcp.credentials.location=C:\\Users\\Admin\\dev\\Projects\\cloud\\credentials-file.json в application.properties файл.

Когда я запускаю приложение, я получаю это исключение

> Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/C:/Users/Admin/dev/Projects/cloud/credentials-file.json]
    at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:158) ~[spring-web-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.cloud.gcp.core.DefaultCredentialsProvider.<init>(DefaultCredentialsProvider.java:94) ~[spring-cloud-gcp-core-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at org.springframework.cloud.gcp.autoconfigure.core.GcpContextAutoConfiguration.googleCredentials(GcpContextAutoConfiguration.java:58) ~[spring-cloud-gcp-autoconfigure-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at org.springframework.cloud.gcp.autoconfigure.core.GcpContextAutoConfiguration$$EnhancerBySpringCGLIB$$375b81d4.CGLIB$googleCredentials$1(<generated>) ~[spring-cloud-gcp-autoconfigure-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at org.springframework.cloud.gcp.autoconfigure.core.GcpContextAutoConfiguration$$EnhancerBySpringCGLIB$$375b81d4$$FastClassBySpringCGLIB$$81fbe7e5.invoke(<generated>) ~[spring-cloud-gcp-autoconfigure-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) ~[spring-context-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.cloud.gcp.autoconfigure.core.GcpContextAutoConfiguration$$EnhancerBySpringCGLIB$$375b81d4.googleCredentials(<generated>) ~[spring-cloud-gcp-autoconfigure-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.1.4.RELEASE.jar:5.1.4.RELEASE]

Я пытался оценитьэкскреция в режиме отладки, все работает .Для этого я оценил эту строку в Intellij Idea.

is = new FileInputStream("C:\\Users\\Admin\\dev\\Projects\\cloud\\credentials-file.json");

в этом методе

    @Override
    public InputStream getInputStream() throws IOException {
        InputStream is = this.servletContext.getResourceAsStream(this.path);
        if (is == null) {
            throw new FileNotFoundException("Could not open " + getDescription());
        }
        return is;
    }

Решение Я переместил свой файл учетных данных впапка resources/static/my-credentials-file.json

project structure

И измененный путь к файлу в файле application.properties (находится в папке src/resources).

spring.cloud.gcp.credentials.location=file:src/main/resources/static/my-credentials-file.json
spring.cloud.gcp.project-id=my-project-id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...