2014-10-18 24 views
33

我想从VCS导入一个项目(当然,我是第一次这样做),这是我的(导入的)项目结构:包名称不对应于文件路径 - IntelliJ

The file structure

BTW。这个屏幕是在多次尝试改变这些目录的属性(在它们的上下文菜单中)之后进行的。

在这些源文件我有以下错误:

The error in the editor

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

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

Error

这是从位于ClientWorker类代码(你可以第一个图片中看到)在同一个目录中Server所以应该知道什么Server是。

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

回答

33

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

这里是解决它的方式:

  1. 将光标移动到带下划线的包语句(package badugi.server
  2. 命中ALT + ENTER
  3. 选择选项移动打包的Badugi .server。这将自动修复你的目录结构相匹配的声明的包

  1. 在Project Explorer中右键点击SRC
  2. 选择新建/包和创建包的Badugi
  3. 选择客户端和服务器包并将它们拖到badugi包
+1

我应该怎么做,如果我喜欢,50班,所有都将被移动到包?有没有办法,或者我只需要手动Alt +输入全部? – parsecer 2016-12-13 21:32:11

1

我ha d由于损坏或可能过时的intellij文件导致相同的问题。在更新到14.0.2之前,我有一个完全正常工作的项目,包含正确命名的包和文件层次结构。

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

我没打算进一步调查(对不起,我不得不在其他地方调查我的时间),但我删除了我的.iml文件和.idea文件夹,失效的缓存,重新启动IDE并重新打开项目,依靠我的maven配置。

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

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

对那些进一步搜索的人的另一种评论:在SC管理的项目中进行重构会留下灰尘 - 我碰巧有一个“旧”文件夹,它重复了当前的包结构。如果.iml或.idea文件有这些包的任何引用很可能的IntelliJ会感到困惑与旧包引用。祝你好运,同胞堆栈交换者。

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

0

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

-2

它可以告诉的IntelliJ忽略这个错误。

文件>设置>编辑器>检查,然后在右侧搜索“错误的包语句”(在Java下,可能的错误)并取消选中它。

+1

这只是隐藏了问题。它没有解决它。 – Eden 2017-11-08 09:51:07

19

我有同样的问题,并通过修改我的项目的.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> 

不知怎的,一包文件夹成为指定为此项目导入时的根源目录。

+1

尼斯:),这是唯一对我有用的东西。 – 2015-08-03 12:52:06

+1

这应该是被接受的答案。您不希望更改在生产环境中工作的应用程序的文件结构(可能导致您必须重新构建生成过程)。相反,你应该改变你的IDE,以便它适当地计算出来。 – 2017-10-02 15:21:09

8

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

+0

谢谢!经过几次尝试,我可以正确设置源代码,而无需更改任何源代码,并且我的项目已修复。 – Pangur 2017-07-19 13:45:40

2

您应该在Project结构中声明(Ctrl + Alt + Shift在模块部分+ S)标记你的文件夹,哪些是源代码包(蓝色),哪些测试?

+0

我已经添加它作为源包,但它不断变回,我不知道为什么。 – Searene 2016-08-08 09:01:30

+0

@Searene:无效缓存并重新启动可能会对您有所帮助 – 2016-08-09 06:14:31

2

一下添加到pom.xml(在project标签内)

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

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

+0

好极了,这个简单的解决方案能够工作! – super1ha1 2016-10-10 01:46:35

+0

对我而言,我从\t \t src更改为\t \t src/main/java super1ha1 2016-10-10 01:47:58

0

也许有人遇到类似的警告,我曾与一个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提供了也没有什么帮助enter image description here 移动文件说,文件已经存在(这是真的),并重新命名包实际上它移至不正确的包。

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

相关问题