我试图为此寻找解决方案,但没有任何乐趣:在Intellij IDEA我设置了一组模块,以便我有以下内容:
依赖关系#1有一个类org.acme.foo,但MWP也是如此,定义不同(哦,欢乐)。它构建正常 - MWP中的所有代码都正确地构建在MWP中的类而不是依赖性#1。
但是......在它的编辑器中,Intellij给了我红色的波形,因为它更喜欢用它不相容的定义来引用Dependency#1中的类。
忽略这个类/包冲突确实不存在的事实,任何人都可以帮助我推动Intellij查看本地模块中的类,而不是依赖类中的类吗?
编辑:我正在使用最新的Intellij 11。 编辑:对于任何发现此问题的人来说,这些麻烦在Intellij 12 + 中消失了答案 0 :(得分:12)
我遇到了这个问题并且正在使用弗拉基米尔的答案(因此我的upvote)但不幸的是我发现我不得不继续重新编辑.iml文件,因为它经常被重写。经过一番挖掘后,我发现了如何永久改变它:
导航到文件 - >项目结构 - >模块 - > - >依赖选项卡
IntelliJ会按照列表中的顺序将依赖项添加到类路径中。要移动它们,只需突出显示要移动的依赖项,然后使用底部工具栏上的向上和向下箭头。
答案 1 :(得分:10)
我在IntelliJ 11(Mac OS X版本)中面临同样的问题。
我手动编辑了项目的.iml文件,并按正确的顺序重新排列了依赖项:我将包含正确版本的.jar文件的orderEntry元素放在最上面。
希望这有帮助。
答案 2 :(得分:1)
就我而言,它在Eclipse中运行良好但在IntelliJ中发生。原因是工具根据不同的机制加载libs / jar:
我有一堆libs / jars在一个目录中。该目录包含在* .iml文件中,如此<orderEntry type="library" name="external-libs" level="project" />
有2个库/罐有冲突(两者都包含&#34; org.joda.time.DateTime&#34;在我的情况下)。但是2个DateTimes具有不同的功能。我必须指定其中一个应该在另一个之前加载。
解决方案:
答案 3 :(得分:0)
我遇到了类似的问题,我正在努力解决这个问题。
我发现了两种情况,我知道这种情况发生了,并找到了解决其中一种情况的方法。
场景1)您的类引用了链路上的类路径,而不是在jar中找到的类,但是在import语句中,import语句的格式为
import com.company.classes.to.use.*
通过填充它们,IDE似乎从同一个jar位置获取该包中的所有类。通过将它们分成单独的导入类语句,IDE将单独选择它们。
场景2)您为重写的类使用菊花链方法。
something.getSomethingElse().getAnotherThing().getYetAnotherThing();
如果getSomethingElse()返回一个在类中没有的对象(所以你不必导入它),那么你仍然会得到错误。 (添加导入会使该行变为灰色,因为它识别它并未使用,因此无效)。无论如何,我不会宽恕这种方法。
编辑:显而易见的替代方法是重构代码以将行分解为
ObjectToImport obj = something.getSomethingElse();
result = obj.getAnotherThing.getYetAnotherThing();
然后导入临时变量...
显然这并不理想,你不应该为了IDE而重构你的代码,但是需要,那些红线会让我烦恼不已。
我希望这些帮助。如果您找到了更好的解决方案,请分享!
此致 中号