Intellij,无法解析符号ByteBufferGuard

我已经建立了一个小型的项目 ,在ByteBufferGuard.java文件中有一个小型的ByteBufferGuard.java

 final class ByteBufferGuard { @FunctionalInterface static interface BufferCleaner { void freeBuffer(String resourceDescription, ByteBuffer b) throws IOException; } } 

然后是另一个类MMapDirectory.java 。 那么,在这个类中,我不能简单地通过导入BufferCleanerBufferCleaner它,因为:

import ByteBufferGuard.BufferCleaner;

收益:

无法解析ByteBufferGuard符号

但是这很奇怪,因为只有ByteBufferGuard被标记为红色,它确实会看到接下来是什么,即BufferCleaner

这两个类都位于相同的gradle默认根包下,即src/main/java/

看类似的答案,我已经试图“无效的缓存/重新启动”,也删除.idea文件夹,再次打开项目..迄今没有成功。

假设这不是一个阻碍因素,因为我可以用ByteBufferGuard.BufferCleaner替换BufferCleaner所有引用,但仍然困扰着我,所以我想解决这个问题。

你知道可能是什么问题吗?

java 1.8 u112

intellij 2017.1 eap

另一个有趣的事实是,使用Kotlin的同样的进口工作就像一个魅力。

不要使用default package (未命名软件包) – 如果你将两个文件移动到一个软件包(子目录),它应该工作。

 package some.package; final class ByteBufferGuard { @FunctionalInterface static interface BufferCleaner { void freeBuffer(String resourceDescription, ByteBuffer b) throws IOException; } } 

 package some.package; import some.package.ByteBufferGuard.BufferCleaner; public class MapDirectory { private BufferCleaner cleaner; // ... } 

(用Eclipse测试,但应该是一样的)

default package导入类是不可能的:

也许让你的类public ,或者如果你想成为一个包,确保使用ByteBufferGuard其他class在同一个包中