无法启动springboot应用程序-资源位置不能为null

2ledvvac  于 2023-05-27  发布在  Spring
关注(0)|答案(6)|浏览(165)

第一次尝试springboot,但我无法让它启动。我使用了sample app:https://github.com/spring-guides/gs-spring-boot.git我还做了一些修改,使用嵌入式jetty代替tomcat,但仍然没有成功。
我得到的例外是:org.springframework.context.ApplicationContextException:无法启动嵌入式容器;嵌套异常为java.lang.IllegalArgumentException:资源位置不能为空。
这是在MacOSX。
编辑:我已经确认这是一个环境问题。我可以在Linux(Fedora)VM中很好地启动应用程序,但无论出于什么原因,我在Mac上遇到了这个问题。不确定是否有其他人遇到这个,并有任何线索,什么可能是造成这一点。
编辑2:所以这似乎是一个问题,试图配置ssl默认情况下。我不知道为什么会这样,因为我没有在任何地方指定这一点;那么我现在的问题是,如何在spring-boot中禁用https?

mvn -version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T09:29:23-08:00)
Maven home: /usr/local/Cellar/maven/3.2.5/libexec
Java version: 1.8.0_25, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.5", arch: "x86_64", family: "mac"

任何帮助都很感激。

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.IllegalArgumentException: Resource location must not be null
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:137) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:536) ~[spring-context-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at hello.Application.main(Application.java:15) [classes!/:0.1.0]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_25]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_25]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_25]
    at java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_25]
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [gs-spring-boot-0.1.0.jar:0.1.0]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [gs-spring-boot-0.1.0.jar:0.1.0]
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [gs-spring-boot-0.1.0.jar:0.1.0]
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:58) [gs-spring-boot-0.1.0.jar:0.1.0]
Caused by: java.lang.IllegalArgumentException: Resource location must not be null
    at org.springframework.util.Assert.notNull(Assert.java:115) ~[spring-core-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]
    at org.springframework.util.ResourceUtils.getURL(ResourceUtils.java:131) ~[spring-core-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.configureSslKeyStore(TomcatEmbeddedServletContainerFactory.java:417) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.configureSsl(TomcatEmbeddedServletContainerFactory.java:395) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.customizeSsl(TomcatEmbeddedServletContainerFactory.java:332) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.customizeConnector(TomcatEmbeddedServletContainerFactory.java:311) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:169) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:134) ~[spring-boot-1.4.2.RELEASE.jar!/:1.4.2.RELEASE]
    ... 16 common frames omitted
gpnt7bae

gpnt7bae1#

在我的www.example.com中添加:server.ssl.enabled=falseapplication.properties解决了这个问题。我假设ssl配置是基于父 Boot 启动程序pom的??同样,不确定为什么这在Linux VM中工作正常。没有时间深入研究这个问题,也许其他人可以提供更多的信息。

lxkprmvk

lxkprmvk2#

我一直在禁用和启用HTTPS(server.ssl.enabled=true),但忘记添加这些:

server.ssl.key-store=file:///Users/...
server.ssl.key-store-password=******

将来可能会帮助一些人。

zed5wv10

zed5wv103#

这可能会帮助一些人:
任何ssl配置都可能导致这种情况,在我的情况下,我有以下遗留配置:

server.ssl.protocol=TLS
server.ssl.enabled-protocols=TLSv1.2

移除这些解决了问题。

c90pui9n

c90pui9n4#

当我有ssl.enabled : true但其他SSL参数没有设置时(因为YAML文件中的缩进不好)。这是它在config/application.yaml中正常工作时的样子。

environments:
  production:
    server:
      port: 9080
      ssl:
        enabled: true
        key-store: /home/peter/app/ucast.rewara.com/ucast.rewara.com.cert.jks
        key-store-password: drowssapekaf
        key-password: ewerw23121sdsd
        key-alias: ucast.rewara.com
    grails:
      serverURL: "https://ucast.rewara.com:9080"`
aemubtdh

aemubtdh5#

我想你可以在文件www.example.com中配置application.properties

#SSL:
server.ssl.enabled=false

如果你想在当地建立。它不会强制您提供SSL的相关证书(http://)
否则,您将构建远程服务器(https://)->使用ssl -> true。

b5lpy0ml

b5lpy0ml6#

我的申请表里有这个。yml

ssl:
    key-store: classpath:xxxx
    key-store-type: yyyy
    key-store-password:
    key-alias: zzzz

改成了

server:
    ssl:
        key-store: classpath:xxxx
        key-store-type: yyyy
        key-store-password:
        key-alias: zzzz

而且成功了

相关问题