1. 程式人生 > >一個有關package的錯誤: 沒有包名的類

一個有關package的錯誤: 沒有包名的類

Akka/play(activator)2.5.3 建立工程

2016-5-20


一個有關package的錯誤

寫了一個類 AkkaSystem,用於處理一些actor相關的一些靜態方法。

為了方便,把這個類直接放在了 app 目錄下,

這樣編譯好了以後,play會把相應的class檔案放在target/scala-2.11/classes 目錄下。

這個類就沒有package包名字。

這個類本身沒有問題。問題出在引用上。

app/controllers/MyController.java 中有一行這樣的程式碼:

future= Patterns.ask(AkkaSystem.getMyActorPoolActorRef(),messages, 1000);

編譯時候,出現類似的錯誤:

[error]/tmp/demo/mytest/app/controllers/MyController.java:33: cannot findsymbol

[error] symbol: variable AkkaSystem

[error] location: class controllers.MyController

[error] Future<Object> future =Patterns.ask(AkkaSystem.getMyActorPoolActorRef(), messages, 1000);

[error](compile:compileIncremental) javac returned nonzero exit code

一直搞不清楚錯在哪裡,直到把類 AkkaSystem 挪到了一個目錄下。

查詢了一下,瞭解到java 關於 類管理的一個細節。

沒有包名字限制的類,只能被沒有包名限制 且 在同一個目錄下的類 引用。

也就是說,

沒有包名字限制的類,不能被有包名字的類引用。

這麼看,app目錄下的由play自建的 兩個類 Module Filters ,是兩個孤立的類,就沒打算讓我們使用。