1. 程式人生 > >springboot+kotlin專案中Application中的main方法啟動報錯

springboot+kotlin專案中Application中的main方法啟動報錯

Kotlin 小科普

這裡大家一個小科普,Kotlin是完全相容JVM,完全無縫支援Java,並且在您可以在JavaKotlin 來回自如的切換,所以開文就借用了官方的一句話,是 Android中的 Swift。就好比 Swift一樣,在支援 Swift新語法的時候,也支援 C語法。但是我有意見了,因為我一接觸後,發現這是錯誤的。因為它是 Java中的 Swift

Kotlin Demo

Springboot Application main 方法正確姿勢

因為   Springboot  需要啟動一個 public static 修飾的 main方法,而   Kotlin  是取消了 static

關鍵詞,靜態方法和引數統一寫在 companion objectinternal模組內可見,inner內部類。

從上得到,可能覺得是這樣寫的:

  1. @SpringBootApplication
  2. @MapperScan(basePackages = arrayOf("com.sojson.mapper"))
  3. open classApplication{
  4. companion object{
  5. fun main(args:Array<String>){
  6. SpringApplication.run(Application::class.java,*args)
  7. }
  8. }
  9. }
  10. //測試呼叫
  11. fun test
    (){
  12. var strs :Array<String>?=null
  13. Application.main(strs asArray<String>)
  14. }

但是得到的結果是:

  1. 錯誤:在類 com.sojson.Application中找不到 main 方法,請將 main 方法定義為:
  2. publicstaticvoid main(String[] args)
  3. 否則JavaFX應用程式類必須擴充套件javafx.application.Application

有的人可能會說Idea不是可以翻譯嗎?我也試過了。翻譯後是這樣的:

  1. @JvmStatic fun main(args:Array<String
    >){
  2. SpringApplication.run(Application::class.java,*args)
  3. }

不知道為何是飄紅的。

正確的的姿勢

程式碼如下:

  1. @SpringBootApplication
  2. @MapperScan(basePackages = arrayOf("com.sojson.mapper"))
  3. open classApplication{
  4. }
  5. /**
  6. * 在此我表示一下,我一邊聽歌,然後一邊Coding,發現1個小時過去了,還是沒解決這個問題?一直找不到Main方法,或者說我不是static修飾的。
  7. * 因為Kotlin取消了 static 關鍵詞。為了和Application統一級別,寫在外面,有可能有其他想法,。
  8. *
  9. * 在選擇啟動Application的時候,請選擇ApplicationKt,有紅X沒關係
  10. *
  11. * 選擇錯誤會出現如下Exception:
  12. * 錯誤: 在類 com.sojson.Application 中找不到 main 方法, 請將 main 方法定義為:
  13. * public static void main(String[] args)
  14. * 否則 JavaFX 應用程式類必須擴充套件javafx.application.Application
  15. */
  16. fun main(args:Array<String>){
  17. SpringApplication.run(Application::class.java,*args)
  18. }

配置如圖(Run Edit Configurations):

這裡有可能選擇完畢後,有顯示紅色錯誤提示,請先不用管,直接執行即可。

Kotlin TO Java 翻譯工具介紹

Intellij IDEA 自帶的 Kotlin Bytecode ,可以把你現在寫的Kotlin程式碼翻譯成   Java  程式碼。有利於你的錯誤排查。另外Intellij IDEA 你可以翻譯  Java  程式碼為   Kotlin  程式碼,大部分翻譯的都沒問題(Copy後貼上即可)。

轉自:https://www.sojson.com/blog/240.html

相關推薦

springboot+kotlin專案Applicationmain方法啟動

Kotlin 小科普這裡大家一個小科普,Kotlin是完全相容JVM,完全無縫支援Java,並且在您可以在Java和 Kotlin 來回自如的切換,所以開文就借用了官方的一句話,是 Android中的 Swift。就好比 Swift一樣,在支援 Swift新語法的時候,也支援

springboot專案多個main方法啟動問題

SpringBoot專案通過掃描整個專案查詢main方法來啟動整個web。但是當專案中含有不止一個標準main方法時,專案打包成jar包時可能無法正常啟動,找不到要啟動的main; 1 修改pom.xml檔案,用如下方式實現 修改pom.xml檔案,

在es的main方法執行Caused by: java.lang.ClassNotFoundException:org.apache.logging.log4j.logger

Caused by: java.lang.ClassNotFoundException:org.apache.logging.log4j.logger 沒有解決辦法 尋求大哥幫忙 檢視maven下的jar包: 雙擊開啟logger.class 發現裡面時空白 說明jar包

CentOS6.xvmware workstation 虛擬機器啟動:Could not open /dev/vmmon

最初安裝報錯,但是介面可以開啟,可以正常安裝,但是安裝過後,啟動報錯 Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so:cannot open sh

在 Spring Boot @Configuration 註解類使用 Mybatis 查詢資料庫啟動

場景 想在 Spring Boot 啟動時使用 guava 快取,將資料庫的部分內容放入快取中,所以寫了一個 CacheConfig 類,但是在啟動過程中報錯,錯誤為: @Configuration public class CacheConfig { }

記錄一次SpringBoot打成war包部署到tomcat啟動

tar oca sep localhost ring ant boot exc RoCE 啟動時,報錯信息如下: 28-Sep-2018 16:55:41.567 嚴重 [localhost-startStop-1] org.apache.catalina.core.Sta

springboot兩種讀取application的資料的方法

pom.xml配置檔案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML

Eclipse部署專案時,Tomcat啟動 “Failed to start component [StandardServer[8005]]”的解決方法

【錯誤現象】SEVERE: The required Server component failed to start so Tomcat is unable to start. org.apache.catalina.LifecycleException: F

IDEA如何給main方法附帶引數

IDEA中如何給main方法附帶引數 一、 測試程式碼:   二、新增引數  1、在終端工具中  ①先編譯: javac Test.java  ②再執行: java Test args1 args2 args3  注:引數之前用空格隔開

Sping+Struts2+Hibernate如何用main方法例項化dao或service

demo1 public static void main(String[] args) {     ApplicationContext context = new ClassPathXmlApplicationContext(               new Str

在parcel專案使用ES7的async語法解決方法

在parcel構建專案後,如果使用ES7的async語法時,在低版本chrome中一直報錯,原因是官方建議的使用babel-preset-env模組並沒有將所有的語法進行編譯,推薦使用transform-runtime外掛,在專案中用到哪些語法編譯哪些語法,具體

解決iview</Input>標簽方法

html debug 分享 alt .com during ast pac CI (1)To turn it off, set vetur.validation.template: false. 這時錯誤並不會消息。 (2)在git bash中輸入yarn add -D

在vue解決提示警告 for迴圈方法

警告 1.出現這個警告問題的時候 我們可以去main.js中在頭部新增這句話: ? 1

20180925:問題:pycharm匯入flask-wtf失敗,:module 'pip' has no attribute 'main'

前後臺頁面搭建完成,開始後臺邏輯操作。 在開始之前,根據視訊要匯入flask-wtf模組。在pycharm中匯入flask-wtf時,卻顯示報錯,錯誤最後一句提示:module 'pip' has no attribute 'main' 試圖在Termianl面

KotlinFragment 控制元件初始化 XXX must not be null

Android Extensions在Fragment中遇到的問題 在Fragment中使用Android Extensions來查詢使用控制元件的時候遇到該控制元件為空的異常: java.lang.IllegalStateException: rcvOrders must not b

maven web 專案啟動 Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

主要原因是maven專案裡面的jar包嗎,沒有匯入到專案中 maven web 專案中啟動報錯  Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet 錯誤描述: Java.lang.Cl

SpringBoot學習(三),兩種啟動方式-以main方法啟動和在tomcat裡啟動

        sprigboot既可以直接通過main方法啟動,也可以在tomcat裡啟動,在main方法裡啟動很簡單,直接run啟動類的main方法就可以了。         在tomcat裡啟動

SpringBoot使用 @Autowired註解 發現提示

在寫註解的時候 用 @Autowired 發現ide提示報錯了 但是不要擔心, 專案執行的時候是能正常執行的, 不影響使用. 也可以把 @Autowired 註解換成 @Resource 註解 就不提示錯誤了

Eclipse部署專案時,Tomcat啟動 “Failed to start component“

    你修改了tomcat的server.xml檔案,如下 <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <

springboot使用jackson容易引起的

轉載於https://blog.csdn.net/qpc672456416/article/details/81942703   可能的原因: 依賴衝突,還是依賴的版本不對 解決方法: 在springboot中是使用jackson要這樣用 依賴: <dep