一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 把Java程序轉換成exe,可直接運行的實現

把Java程序轉換成exe,可直接運行的實現

2020-10-01 01:22棒棒的胖胖 Java教程

這篇文章主要介紹了把Java程序轉換成exe,可直接運行的實現,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

最近,項目不是很趕,突發奇想,打算寫一個定時提醒的軟件,設想即在某些指定的時刻,彈出彈窗,顯示一些設定的話,5s之后自動關閉。

定時提示這一部分很基礎,定時采用spring的@schedule的cron來設定,彈窗用Java Awt 來解決,不再贅述。項目寫完之后,用maven打成jar包,用exe4j 把jar包轉換成電腦 可執行文件exe。記錄一下遇到的問題。

1、在springboot工程中運行程序,會提示一個java.awt.HeadlessException的錯誤,由于是全部解決完之后才記錄,并沒有上截圖。

解決方法:在新建Frame或者JFrame之前,添加代碼 設置系統屬性。

System.setProperty("java.awt.headless", "false");

2、如何讓彈窗顯示5s之后關閉。

解決方法:5s可以用線程的sleep方法,但是關閉彈窗,我之前采用的是System.exit(0)。 這個雖然可以關閉,但是是強行關閉整個Java運行程序,導致程序不能繼續運行,因此換成如下:

?
1
2
3
4
5
6
7
try {
  Thread.sleep(5000);
  frame.setVisible(false);//5s自動關閉
 } catch (InterruptedException e1) {
  e1.printStackTrace();
  System.exit(0);
 }

3、exe4j生成的exe運行報錯,提示NoClassDefException,找不到主類。

解決方法:在生成exe的第五步,選擇主類不要選擇項目的主類,而是選擇

org.springframework.boot.loader.PropertiesLauncher。。

即可

4、exe運行,提示沒有jre環境。(在沒有安裝jre的機器上運行)

解決的方法:需要把生成的exe和安裝好的jre文件,打包發給別人。然后保證exe必須和jre在一個文件下,正常運行

補充知識:解決子線程不共有父線程的請求上下文環境

正常的開啟子線程的時候,存在一個問題。

即 子線程并不具有父線程的請求上下文環境,比如說session,子線程在請求服務器的時候是沒有session的,于是服務器隨機生成一個session賦給他,這就導致一個問題。比如說微服務開發的時候,需要在子線程通過feign調用其他服務的接口,而這些被調用的接口一般都需要驗證是否具有權限,此時,通過子線程訪問接口就會拋出401或者403的權限錯誤。

解決思路很簡單,即開啟子線程的時候,確保子線程共有父線程的請求上下文環境。只需要在啟動線程之前加上如下代碼即可。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
 * 生成日報表
 * @param日期
 * */
 @POST
 @Path(value = "/generateDayreport")
 @Operation(code = 301,desc = "生成")
 public String lookDayreport(@RequestBody String req) throws BusinessAccessException{
 ExecutorService threadPool = Executors.newFixedThreadPool(5);
 Map<String, String> map = new HashMap<>();
 JSONObject jsonObject = JSONObject.parseObject(req);
 String date = jsonObject.getString("date");
 RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes();
 System.out.println("=ui==="+requestAttributes.getSessionId());
 RequestContextHolder.setRequestAttributes(requestAttributes, true);//子線程繼承主線程的上下文
 try {
  service.insertDayreport(date, "1", "true");
  map.put("code", "1");
 } catch (Exception e) {
  // TODO: handle exception
  e.printStackTrace();
  map.put("code", "2");
 }
 GenerateDayReport generateDayReport = new GenerateDayReport(date);
 threadPool.execute(generateDayReport);
 threadPool.shutdown();
 return JSONObject.toJSONString(map);
 }

GenerateDayReport是實現Runable接口的類

以上這篇把Java程序轉換成exe,可直接運行的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/zhiweixlw/article/details/78926737

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久精品免费看国产一区 | 好男人免费高清在线观看2019 | 外国老少性配 | 亚洲码和乱人伦中文一区 | 热久久天天拍天天拍热久久2018 | 日韩高清成人毛片不卡 | 久久九九有精品国产23百花影院 | 午夜欧美精品久久久久久久久 | 亚洲第五色综合网啪啪 | 好逼天天有| 美女18隐私羞羞视频网站 | 齐天大性之七仙女欲春迅雷链接 | 男生和老师一起差差差 | 成人福利视频网址 | 国内精品久久久久久中文字幕 | 国产日韩免费视频 | 久久精品国产视频澳门 | 久久性生大片免费观看性 | 无码人妻少妇色欲AV一区二区 | 希望影院高清免费观看视频 | 日本xxxxx18护士xxx| 白丝h视频 | 国产福利不卡 | 日韩在线成人 | 二次元美女互摸隐私互扒 | 国产99精品免费视频看6 | bbc japanese黑人强行 | 精品国产麻豆AV无码 | 日本三级香港三级久久99 | 色综合91久久精品中文字幕 | 日韩xx00 | 日韩视频在线观看中字 | 国产一卡2卡3卡四卡精品网 | 国产精品成人va在线观看 | 国产成人性毛片aaww | 天天综合天天综合色在线 | 日韩精品中文字幕视频一区 | 奶茶视频官网免费 | 精新精新国产自在现 | 亚洲精品综合一区二区 | 亚洲va欧美va天堂v国产综合 |