2012-04-19 112 views
0

我正在考慮創建一個遊戲中使用Java更受限制版本的代碼IDE,例如我不希望它使用I/O流API。這甚至有可能嗎?限制Java編譯器API

另外,inb4 this。它仍然無助於限制能力,只有愚蠢/邪惡的學生XD。

回答

0

取決於「不使用」的含義。如果在該IDE內編寫的代碼不允許訪問流API(而不是IDE本身),則可以始終提供自己的類加載器,該類加載器可以限制對類或整個包的訪問。

2

您可以自定義您的java.policy。您可以在此設置可在Java應用程序中使用的類。如果你的學生使用了一個不存在於該策略中的類,將會拋出一個安全異常。

2

限制編譯器是一種可能性 - 但可能不是最簡單的一種。你可以試着用-bootclasspath option來調用你的編譯器,它提供了JRE的rt.jar的精簡版本。然後使用禁止類(或者實際上:使用未包含在受限制的jar文件中的類)會導致編譯器錯誤。

使用runtime security manager並給予您的學生代碼僅限制的權限是一個更好的主意。給學生的課程只需要他們實際需要的permissions(這很可能幾乎沒有,取決於要解決的任務),並且他們將不能做任何惡意的事情,同時仍然能夠使用大部分標準API,只要它不與外部系統連接即可。

當然,這仍然不會阻止無限循環,即actually impossible