通过jar运行springboot应用程序,在URL中不包括appname。

7 浏览
0 Comments

通过jar运行springboot应用程序,在URL中不包括appname。

大家好,我已经将我的Spring Boot应用制作成了一个Jar文件。现在,当我使用java -jar myapp.jar运行它时,它成功运行,但只能通过localhost:8080/访问,而不是localhost:8080/myapp。这个URL中没有包含应用名称。请问有人知道为什么会这样,以及如何更改此设置?当使用War文件部署时,它在localhost:8080/myapp上工作正常。

0
0 Comments

问题原因:在使用Spring Boot的jar包运行应用时,无法通过URL访问资源文件。

解决方法:在application.properties文件中添加以下配置:

server.contextPath=/youapp/*

同时,可以修改端口号:

server.port = 8880

这样就可以通过指定的上下文路径来访问应用。但是,在尝试使用ClassLoader加载位于资源文件夹中的文件时,出现了无法访问文件的错误。

具体错误信息如下:

java.io.FileNotFoundException: file:\C:\Users\rishabh.jain1\Documents\workspace-sts-3.8.2.RELEASE\SpringMVCMavenProject\target\SpringMVCMavenProject.jar!\BOOT-INF\classes!\documents\sample1.pptx

这个错误是由于使用ClassLoader.getResource()方法获取资源文件路径时,返回的路径格式不正确导致的。

解决这个问题的方法是使用Spring Boot提供的ResourceUtils类来获取资源文件的路径,代码如下:

String filePath = ResourceUtils.getFile("classpath:documents/" + id).getPath();
File file = new File(filePath);

通过使用ResourceUtils.getFile()方法,可以正确地获取到资源文件的路径,从而解决无法访问文件的问题。

0