关于包名称与文件路径不符:包名称与文件路径不符

您所在的位置:网站首页 软件包架构不匹配怎么解决 关于包名称与文件路径不符:包名称与文件路径不符

关于包名称与文件路径不符:包名称与文件路径不符

2023-06-27 23:59| 来源: 网络整理| 查看: 265

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

顺便说一句。在尝试更改这些目录的属性(在其上下文菜单中)后,将创建此屏幕。

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

有一次它对badugi.client没有任何影响,但仅在badugi.server中报告了此错误。我完全不知道它是如何工作的...

同一目录中的类也不会互相看到。

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

我很确定此代码在我朋友的IDE中能正常工作。如何配置IntelliJ使其起作用?

从目录结构来看,您有两个程序包client和server,但是代码期望程序包badugi.client和badugi.server。

这是修复它的一种方法:

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

右键单击Project Explorer中的src 选择新建/包并创建包badugi 选择客户端和服务器程序包并将其拖到badugi程序包中 相关讨论 如果我有50个班级,并且都将被转移到包裹中,该怎么办?有没有办法,或者我只需要手动Alt全部输入?

我遇到了同样的问题,并通过修改项目的.iml文件修复了该问题:

发件人:

12345      

收件人:

12345      

以某种方式在导入此项目时将包文件夹指定为根源目录。

相关讨论 这应该是公认的答案。您不希望更改可在生产环境中工作的应用程序的文件结构(可能导致您不得不重新构建过程)。相反,您应该更改您的IDE,以使其正确识别。 希望我能对此再投票。这是解决我的问题的实际方法。 谢谢,特恩。同样,根据相同的逻辑,您可以使用Intelij IDEA通过设置对其进行编辑:File -> Project Structure -> Modules,并将其标记为Sources正确路径。 IML文件是否适合通过源代码控制共享?我们的项目在.gitignore中包含它们。我在根module元素上看到一个external.linked.project.id属性,该属性引用项目所在的目录的名称(特定于该副本)。我喜欢这种解决方案,但前提是不必为每个副本都重复这种解决方案。

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

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

123   src/main/java

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

相关讨论 就我而言,我从\\\\ t \\\\ t src 更改为\\\\ t \\\\ t src / main / java super1ha1 @您以前在这里救了我!谢谢你。

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

相关讨论 香港专业教育学院将其添加为源程序包,但它不断改回来,我不知道为什么。 @Searene:使缓存无效并重新启动可能会帮助您 它的Cmd-;在Mac上:)

我在文件夹src下创建了一个程序包,它解决了此问题。

项目结构

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

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

我不想再做进一步的调查,但是我依靠自己的maven配置删除了.iml文件和.idea文件夹,使缓存无效,重新启动了IDE,然后重新打开了项目。

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

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

对于进一步研究这些内容的另一条评论:在SC管理的项目中进行重构可能会留下灰尘-我碰巧有一个"旧"文件夹,该文件夹重复了当前的包结构。如果.iml或.idea文件对这些软件包有任何引用,则intellij可能会与对旧软件包的引用混淆。祝你好运,StackExchangers成员。

更新:我删除了一个引用的maven项目中的一些文件,古怪的东西又回来了。因此,我的帖子绝不是最终答案。

我有一个类似的错误,我的解决方法是从项目名称中删除"-"字符。我使用的是MyApp

而不是my-app

这很棘手。在我的情况下,文件夹结构为:

com/appName/rateUS/models/FileName.java

我在文件FileName.java中指定的程序包名称为:

1package com.appName.rateUs.models;

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

希望这对某人有帮助!

Kotlin

对于遵循docs软件包约定的使用Kotlin的用户:

In pure Kotlin projects, the recommended directory structure is to follow the package structure with the common root package omitted (e.g. if all the code in the project is in the"org.example.kotlin" package and its subpackages, files with the"org.example.kotlin" package should be placed directly under the source root, and files in"org.example.kotlin.foo.bar" should be in the"foo/bar" subdirectory of the source root).

IntelliJ还不支持此功能。您唯一可以做的就是禁用此警告,并接受IDE在更改文件夹/文件结构时不会帮助您进行重构。

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

Package names doesn't correspond to directories structure, this may cause problems with resolve to classes from this file Inspection for files with package statement which does not correspond to package structure.

文件位于正确的位置,因此IDE提供的帮助程序解决方案没有帮助 "移动文件"说文件已经存在(这是真的),"重命名包"实际上会将其移动到错误的包中。

问题在于,如果您有Scala对象,则必须确保文件中的第一个对象与文件名具有相同的名称,因此解决方案是将对象移动到文件内。

我只是在解决类似的问题。解决该问题的方法是将Intellij模块的根源文件设置为与原始项目的根文件夹匹配。然后,我需要在项目导航面板中将某些文件夹标记为Excluded(不应该在新的一个项目中使用的文件夹,对我而言,这是Android下使用的一部分)。仅此而已。

可以告诉Intellij忽略此错误。

文件>设置>编辑器>检查,然后在右侧搜索"错误的包装声明"(在Java中,可能是错误),然后取消选中它。

相关讨论 我赞成这一点,因为我的文件夹结构正确(并且gradle可以很好地编译Java)并且Android-Studio出现错误



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3