Kotlin Springboot 启动Application main 方法正确姿势

JSON 2017-08-13 02:43:28 21430

Kotlin 小科普

这里大家一个小科普,Kotlin 是完全兼容JVM ,完全无缝支持Java ,并且在您可以在Java Kotlin 来回自如的切换,所以开文就借用了官方的一句话,是 Android 中的 Swift 。就好比 Swift 一样,在支持 Swift新语法的时候,也支持 C 语法。但是我有意见了,因为我一接触后,发现这是错误的。因为它是 Java 中的 Swift

Kotlin Demo

请关注我的 Kotlin + Springboot Demo https://www.sojson.com/jc/kotlin-index.html

Springboot Application main 方法正确姿势

因为   Springboot  需要启动一个 public static  修饰的 main 方法,而   Kotlin  是取消了 static 关键词,静态方法和参数统一写在 companion object internal 模块内可见,inner 内部类。

从上得到,可能觉得是这样写的:

@SpringBootApplication
@MapperScan(basePackages = arrayOf("com.sojson.mapper"))
open class Application {
    companion object{
        fun main(args: Array<String>) {
            SpringApplication.run(Application::class.java, *args)
        }
    }
}
//测试调用
fun test(){
    var strs : Array<String> ?=null
    Application.main(strs as Array<String>)
}

但是得到的结果是:

错误: 在类 com.sojson.Application 中找不到 main 方法, 请将 main 方法定义为:
   public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application

有的人可能会说Idea不是可以翻译吗?我也试过了。翻译后是这样的:

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

不知道为何是飘红的。

正确的的姿势

代码如下:

@SpringBootApplication
@MapperScan(basePackages = arrayOf("com.sojson.mapper"))
open class Application {

}

/**
 * 在此我表示一下,我一边听歌,然后一边Coding,发现1个小时过去了,还是没解决这个问题?一直找不到Main方法,或者说我不是static修饰的。
 * 因为Kotlin取消了 static 关键词。为了和Application统一级别,写在外面,有可能有其他想法,。
 *
 * 在选择启动Application的时候,请选择ApplicationKt,有红X没关系
 *
 * 选择错误会出现如下Exception:
 *  错误: 在类 com.sojson.Application 中找不到 main 方法, 请将 main 方法定义为:
 *  public static void main(String[] args)
 *  否则 JavaFX 应用程序类必须扩展javafx.application.Application
 */

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

配置如图(Run Edit Configurations):

这里有可能选择完毕后,有显示红色错误提示,请先不用管,直接运行即可。

Kotlin TO Java 翻译工具介绍

Intellij IDEA  自带的 Kotlin Bytecode  ,可以把你现在写的Kotlin代码翻译成   Java  代码。有利于你的错误排查。另外 Intellij IDEA 你可以翻译  Java  代码为   Kotlin  代码,大部分翻译的都没问题(Copy后粘贴即可)。


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/240.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
springboot启动原理
springboot启动原理
JSOUP教程,JSOUP的正确打开姿势
Ehcache项目启动完毕报错java.net.SocketTimeoutException: connect timed out
Linux Centos 使用 Redis service 启动,Redis service 脚本编写
Elasticsearch 启动 Likely root cause: java.nio.file.AccessDeniedException
Redis 启动失败 Please see the documentation included with the binary distributions for more details on the --maxheap flag.
Springboot Maven 增加本地依赖包,Springboot Maven打包本地包
Springboot 打Jar包,Maven完美解决本地Jar包自动打入Springboot Jar包中
BlockingQueue 方法详细描述
最新文章
文件上传漏洞与防御 4058
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 1444
物联网时代2026年时序数据库选型指南 1151
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 1269
神经网络:从构造到模型训练全链路解析 1168
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 1593
Linux sudo提权完整指南:从基础用法到生产级安全配置 691
XSS 和 CSRF 的本质区别及开发防御全解析 772
JVM垃圾回收(GC)全维度解析:从原理到调优实战 813
Linux动静态库与ELF加载全解析:从实操制作到底层原理 912
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 783114
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 711464
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679993
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562673
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512621
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484794
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 302947
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247433
Elasticsearch教程(一),全程直播(小白级别) 233097
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228329
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...