Intellij,无法解析符号ByteBufferGuard
我已经建立了一个小型的项目 ,在ByteBufferGuard.java
文件中有一个小型的ByteBufferGuard.java
:
final class ByteBufferGuard { @FunctionalInterface static interface BufferCleaner { void freeBuffer(String resourceDescription, ByteBuffer b) throws IOException; } }
然后是另一个类MMapDirectory.java
。 那么,在这个类中,我不能简单地通过导入BufferCleaner
来BufferCleaner
它,因为:
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
导入类是不可能的:
- https://stackoverflow.com/a/7849460/85421
- 如何从默认包中导入一个类
也许让你的类public
,或者如果你想成为一个包,确保使用ByteBufferGuard
其他class
在同一个包中