【问题标题】:Package name does not correspond to the file path - IntelliJ包名与文件路径不对应 - IntelliJ
【发布时间】:2014-12-13 22:59:45
【问题描述】:

我正在尝试从 VCS 导入一个项目(嗯,我实际上是第一次这样做),这是我(导入的)项目的结构:

顺便说一句。此屏幕是在多次尝试更改这些目录的属性(在其上下文菜单中)后生成的。

在这些源文件中出现以下错误:

有一次它对badugi.client 没有任何反应,但它只在badugi.server 中报告了这个错误。我完全不知道它是如何工作的......

同样目录中的类也看不到彼此。

这是来自ClientWorker 类的代码,它与Server 位于同一目录中(如您在第一张图片中所见),因此它应该知道Server 是什么。

我很确定这段代码在我朋友的 IDE 中运行良好。如何配置 IntelliJ 以使其工作?

【问题讨论】:

    标签: intellij-idea packages project-structure


    【解决方案1】:

    从目录结构来看,你有两个包client和server,但是代码需要包badugi.client和badugi.server。

    这里有一个解决方法:

    1. 将光标置于带下划线的包语句 (package badugi.server)
    2. 点击 ALT + ENTER
    3. 选择选项移动到包badugi.server。这将自动修复您的目录结构以匹配声明的包

    1. 在项目资源管理器中右键单击 src
    2. 选择New/Package并创建包badugi
    3. 选择客户端和服务器包并将它们拖到 badugi 包中

    【讨论】:

    • 如果我有喜欢的,50个类,全部要移到包里怎么办?有没有办法,或者我只需要手动 Alt+Enter 全部?
    【解决方案2】:

    由于 intellij 文件损坏或可能已过时,我遇到了同样的问题。在更新到 14.0.2 之前,我有一个完美运行的项目,其中包含正确命名的包和文件层次结构。

    更新后,maven 编译工作顺利,但 Intellij 报告特定包上的上述错误(其他具有类似特征的包不受影响)。

    我没有费心进一步调查,但我删除了我的 .iml 文件和 .idea 文件夹,使缓存无效,重新启动 IDE,然后重新打开项目,这依赖于我的 maven 配置。

    注意:这会有效地删除运行和调试配置!

    也许了解 intellij 工作区文件的人可以对此发表评论?

    对于那些进一步搜索的人的另一条评论:在 SC 托管项目中重构可能会留下灰尘——我碰巧有一个“旧”文件夹,其中包含当前包结构的重复。如果 .iml 或 .idea 文件对这些包有任何引用,则 intellij 可能会与对旧包的引用混淆。祝大家好运,StackExchangers。

    更新:我删除了引用的 maven 项目中的一些文件,怪癖又回来了。所以,我的帖子绝不是最终答案。

    【讨论】:

      【解决方案3】:

      我只是在与类似的问题作斗争。我解决它的方法是设置 Intellij 模块的根源文件以匹配原始项目根文件夹。然后我需要在项目导航面板中将一些文件夹标记为已排除(不应该在新项目中使用的文件夹,对我来说它是在 Android 下使用的一部分)。就是这样。

      【讨论】:

        【解决方案4】:

        可以告诉 Intellij 忽略此错误。

        File > Settings > Editor > Inspections,然后在右侧搜索“Wrong package statement”(Under Java, Probable Bugs)并取消勾选。

        【讨论】:

        • 我赞成这个,因为我的文件夹结构是正确的(并且 gradle 可以很好地编译我的 Java)并且 Android-Studio 有错误
        • 我对此表示赞成,因为在 Scala 中允许包和文件路径不同。我要补充的一件事是,与其取消选中它,不如将标志级别从error 移动到warnsilent warn。请注意,Scala 和 Java 设置是分开的。
        【解决方案5】:

        我遇到了同样的问题,并通过修改我的项目的 .iml 文件来解决它:

        发件人:

        <content url="file://$MODULE_DIR$">
          <sourceFolder url="file://$MODULE_DIR$/src/wrong/entry/here" isTestSource="false" />
          <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
          <excludeFolder url="file://$MODULE_DIR$/target" />
        </content>
        

        收件人:

        <content url="file://$MODULE_DIR$">
          <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
          <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
          <excludeFolder url="file://$MODULE_DIR$/target" />
        </content>
        

        当这个项目被导入时,一个包文件夹被指定为根源目录。

        【讨论】:

        • 这应该是公认的答案。您不希望更改在生产中运行的应用程序的文件结构(可能导致您必须重新构建构建过程)。相反,您应该更改您的 IDE,以便它能够正确地计算出来。
        • 希望我能多点赞。这是我的问题的实际解决方案。
        • 谢谢,特兰。此外,通过相同的逻辑,您可以使用 Intelij IDEA 通过设置进行编辑:File -&gt; Project Structure -&gt; Modules 并标记为Sources 正确路径。
        • IML 文件是否适合通过源代码管理进行共享?我们的项目在.gitignore 中有它们。我在根module 元素上看到了一个external.linked.project.id 属性,它引用了项目所在目录的名称(特定于那个copy)。我喜欢这个解决方案,但前提是不必为每个副本都重复。
        • 就我而言,我通过将 更改为 快速有效!感谢您的回答
        【解决方案6】:

        我也见过几次这个错误,我总是能够通过正确识别项目的模块设置来解决它。在 IntelliJ 中,右键单击顶层项目 ->“打开模块设置”。这应该会打开一个窗口,其中将整个项目结构和内容标识为“源文件夹”、“测试源文件夹”等。确保这些设置正确。对于“源文件夹”,请确保该文件夹是您的 src/ 或 src/java(或任何您的源语言),视情况而定

        【讨论】:

        • 这节省了我的一周。愿上帝保佑你。
        【解决方案7】:

        您应该在模块部分的项目结构中声明(Ctrl+Alt+Shift+s)标记您的文件夹,其中哪些是源包(蓝色),哪些是测试...

        【讨论】:

        • 我已经把它添加为源包,但它总是变回来,我不知道为什么。
        • @Searene:使缓存无效并重新启动可能会对您有所帮助
        • 这是 Cmd-;在 Mac 上 :)
        【解决方案8】:

        将此添加到pom.xml(在project 标签内)

        <build>
          <sourceDirectory>src/main/java</sourceDirectory>
        </build>
        

        src/main/java 是您要设置的源文件夹。如果您的 pom.xml 文件中已经有这一行,请检查它是否正确。

        【讨论】:

        • 就我而言,我从 src 更改为 src/main/java
        • super1ha1@ 你以前在那里救了我!谢谢。
        • 就我而言,这是正确的答案。之后,您必须右键单击概览中的项目文件夹,转到您的编译器部分并单击“重新加载项目”。
        【解决方案9】:

        也许有人遇到了我在 Scala 项目中遇到的类似警告。

        包名与目录结构不对应,这可能会导致从该文件解析类时出现问题 检查带有与包结构不对应的包语句的文件。

        文件在正确的位置,所以IDE提供的帮助解决方案没有帮助 移动文件说文件已经存在(这是真的)并且重命名包实际上会将它移动到不正确的包中。

        问题是如果你有Scala Objects,你必须确保文件中的第一个对象与文件名同名,所以解决方法是移动文件内的对象。

        【讨论】:

          【解决方案10】:

          科特林

          对于那些使用 Kotlin 并遵循 docs 包约定的人:

          在纯 Kotlin 项目中,推荐的目录结构是遵循包结构,省略公共根包(例如,如果项目中的所有代码都在“org.example.kotlin”包及其子包中,文件与“org.example.kotlin”包应该直接放在源码根目录下,“org.example.kotlin.foo.bar”中的文件应该在源码根目录下的“foo/bar”子目录下)。

          IntelliJ doesn't support this yet。您唯一能做的就是禁用此警告,并接受 IDE 在更改文件夹/文件结构时不会帮助您进行重构。

          【讨论】:

            【解决方案11】:

            我在文件夹 src 下创建了一个包来解决这个问题。

            project structure

            【讨论】:

              【解决方案12】:

              这在这里很棘手。就我而言,文件夹结构是:

              com/appName/rateUS/models/FileName.java

              我在文件 FileName.java 中指定的包名是:

              package com.appName.rateUs.models;
              

              注意包名之间的细微差别:它应该是 rateUS 而不是 rateUs

              希望这对某人有所帮助!

              【讨论】:

                【解决方案13】:

                我遇到了类似的错误,在我的情况下,修复是从项目名称中删除“-”字符。我用MyApp代替my-app

                【讨论】:

                  【解决方案14】:

                  对我来说,问题是我将一个包重构为一个不同的名称,并且出于某种原因 IntelliJ 已将其还原(即使包名称,就 git 跟踪而言,并没有改变)。我再次将其重构为新名称并解决了问题。

                  【讨论】:

                    【解决方案15】:

                    只需创建另一个Package 并将所有文件夹移至其!所有错误都将删除

                    【讨论】:

                      【解决方案16】:

                      最简单的解决方案就是重命名每个类的第一行。

                      例如

                      IntelliJ 告诉我们包名应该是“module09.nationalratswahlen”

                      当前名称是“oop2.module09.nationalratswahlen”

                      只需按 Control-Shift-R 并将所有文件中的“oop2.module09”替换为“module09”。但是,通常您应该只通过版本控制中的文件 > 新建 > 项目来克隆存储库。那么你就可以避免这些问题了。

                      【讨论】:

                        猜你喜欢
                        • 2014-02-07
                        • 1970-01-01
                        • 2016-09-11
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2019-05-07
                        • 1970-01-01
                        相关资源
                        最近更新 更多