Intellij忽略.kt文件在没有'package ..'语句的包结构下? 为什么?

package com.yada.yada 

当我在没有包语句的com.yada.yada创建Java类“ss”时IntelliJ会发生什么? – 红色“缺少包装声明”。

当我在没有包声明的com.yada.yada创建Kotlin文件时会发生什么? – “直到你的DI框架在运行期间将无法扫描你的代码”

为什么IJ软件包验证对Kotlin不是强制性的? 我只是浪费了一个小时,试图找出封装扫描有什么问题,才意识到这是显示屏。 Java 9的拼图将这种格式不正确的文件/类引发的Kotlin混淆了四倍而没有警告信息? 那么,你打赌会的!

请返回Kotlin的“警告”声明。 PS注册/登录方法是不足以让我自己访问Intellij错误追踪(我真的生气了一次访问密码重置,1000资源和980密码我不记得或关心),因此使这个公共在计算器上。

如果有人要捍卫这种行为,请解释为什么? 也许我错过了一些东西,否则请回复打开错误(最好是JetBrains的某个人),我会接受它。

对没有包声明的文件缺少检查警告是一个错误; 相应的YouTrack问题在这里 。

我不确定这个帖子在这里是否合适,但是为了回答真正的问题, 官方文件指出:

如果未指定包,则此文件的内容属于没有名称的“默认”包。

由于使用Kotlin,您的文件不必位于与包装相匹配的文件夹中,因此没有包装声明必须是一个选项,以便您可以将文件组织到文件夹中,但不希望将其放入包 – 这样,它们可以拥有相同的包,就好像它们没有嵌套在任何文件夹中一样,只是在项目的根目录中。

我承认这有点奇怪,你的包声明与你的文件所在的文件夹不匹配,但是如果你完全忽略了包声明,你就不会得到这个声明。 我猜想这是故意的。

这通常不会成为问题,因为默认情况下,IDE将为您创建文件的文件夹生成相应的包声明。 我不确定如果你使用的是IntelliJ,没有包声明,你是如何创建一个文件的,除非你在根src文件夹中而不是在一个包文件夹中。