2017-01-23 22 views
1

我已經建立了小project,與ByteBufferGuard小final類:的IntelliJ,不能在<code>ByteBufferGuard.java</code>文件來解決符號ByteBufferGuard

然後另一個類,MMapDirectory.java。那麼,在這個班,我不能指BufferCleaner只需導入,因爲這樣:

import ByteBufferGuard.BufferCleaner;

回報:

不能解析符號ByteBufferGuard

但奇怪因爲只有ByteBufferGuard標記爲紅色,它確實會看到接下來會發生什麼,即BufferCleaner

兩個類都位於同一gradle這個默認的根包下,這是src/main/java/

在類似的回答看,我已經嘗試過「無效緩存/重啓」,同時也刪除.idea文件夾,然後再次打開該項目..目前爲止沒有成功。

假設這不是一個障礙,因爲我可以使用ByteBufferGuard.BufferCleaner替代BufferCleaner的所有引用,但仍然困擾我,所以我想解決這個問題。

你知道可能是什麼問題嗎?

的Java 1.8 U112

的IntelliJ 2017.1 EAP

另一個有趣的事實是,使用科特林非常相同的進口就像一個魅力..

+2

讓'ByteBufferGuard'' public'? – CKing

+0

我想你需要導入整個類:'import ByteBufferGuard'。不是100%確定的。 –

+0

@CKing,它們在同一個包中,所以它應該沒關係,但是我試圖編寫'public final class ByteBufferGuard',但不幸的是它既不工作也不工作 – elect

回答

0

不要使用default package(未命名包) - 如果您將兩個文件都移動到一個pa ckage(子目錄)它應該工作。

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導入類:

+1

downvote沒有評論將無助於改善答案! –

+0

這確實是這個問題,謝謝Carlos! – elect

+0

我+1(當它是0),它又是零,它看起來像其他人也downvoted ..我永遠不會理解這些人.. – elect

0

也許讓你public類,或者如果你想要確定,其他class誰使用ByteBufferGuard是在同一個包中

相關問題