解決springboot項目打成jar包後運行時碰到的小坑

項目打成jar包後運行時的坑

問題

我的springboot項目中有用的一段代碼是往static目錄下添加文件獲取路徑的代碼如下

String path=ResourceUtils.getURL("classpath:static/task").getPath().replace("%20"," ");

部署阿裡雲的服務器上,通過運行jar包的形式運行的時候,發現運行到這部分代碼的時候,獲取到staic/task路徑後通過路徑創建文件的時候會出現問題

  • windows系統會報異常
  • linux系統會在跟jar同級目錄下創建獲取的目錄及文件夾)

顯然這些都不是我們想要的

解決辦法

保持原來的項目結構,將jar包解壓後通過運行springboot啟動類來啟動項目

解壓jar命令:

jar xvf 文件名.jar      解壓到當前目錄

運行class命令可參考

nohup java -cp .:/opt/homework/BOOT-INF/lib/* lemon.homework.HomeworkApplication >/opt/homework/temp.txt

後臺運行class且加入依賴的jar包並將日志文件輸出至temp.txt:

打jar包後運行提示找不到界面

用的thymeleaf模版,把html文件放在resources的templates目錄下面。

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

控制層代碼為:

	@RequestMapping("login")
	public String login(String code, HttpServletResponse response, HashMap<String, Object> map) {
		logger.debug("code:" + code);
		return "/login";
	}

在eclipse訪問是沒有問題的,可以正常訪問到界面。

但是打jar包後,java -jar運行時,提示找不到login模版。

去掉視圖名稱中的"/"就好瞭。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: