2012-06-14 45 views
1

好的,所以我正在編寫一個JAR作爲即時消息系統的後端實現。爲了讓課程與所有人互動,我正在使用public class MyClassHere { ... }。但是,當我將所有類編譯到JAR中時,我不想讓除了主類之外的任何類都可訪問。我怎樣才能做到這一點?控制對JAR中類的訪問

回答

2

我能想到的唯一方法是在構建鏈中使用像ProGuard這樣的工具來停止暴露主類之外的所有內容。

+0

我將如何配置ProGuard來做到這一點?我會做一些搜索,但我從來沒有用過它。 – Odiefrom

+0

該鏈接頁面上的第一個示例基本上只保留主函數並隱藏/混淆/重命名/優化其他所有內容。 –

+0

雖然我沒有主要功能,因爲這只是實現。基本上我想能夠使用這個JAR,編寫另一個調用主文件構造函數的程序,然後只能觸及該主類的方法。 – Odiefrom

1

不是很優雅,而且速度很慢,但是在這些類的構造函數中,您可以檢查它們正在實例化的類(使用new Exception.getStacktrace()) - 並限制控件(如果除了類之外的其他任何東西調用)。

+0

這將用於控制類的實例,但我也不希望該類的方法被訪問。在服務器上的幾乎每個類的每種方法上實現該方法都會有一些開銷 – Odiefrom

+0

@Odiefrom除了構造函數外,並非每種方法都只有靜態方法才能添加這些檢查。沒有對象實例化,不能調用非靜態方法。但我同意,不是很優雅。 – kjp