如果满足条件,则停止java执行

如果满足条件,则停止java执行,java,Java,所以这个想法是一种虚拟教室(一个网站),学生上传未编译的.java文件,我们的服务器将编译并通过C#或PHP执行,语言不重要,创建一个.bat文件并获得控制台的反馈,如果程序编译正确与否,以及基于某个预先制作的测试的执行是否正确,到目前为止,我们的测试确实有效,但我们完全无法控制.java文件中的内容,因此如果出现了某些标准,即用户输入、infite循环,套接字实例等。。。我在互联网上挖掘是否有办法配置java环境来避免这种情况,但到目前为止找不到任何东西,而且我们不希望我们的后端语言通过文件来

所以这个想法是一种虚拟教室(一个网站),学生上传未编译的.java文件,我们的服务器将编译并通过C#或PHP执行,语言不重要,创建一个.bat文件并获得控制台的反馈,如果程序编译正确与否,以及基于某个预先制作的测试的执行是否正确,到目前为止,我们的测试确实有效,但我们完全无法控制.java文件中的内容,因此如果出现了某些标准,即用户输入、infite循环,套接字实例等。。。我在互联网上挖掘是否有办法配置java环境来避免这种情况,但到目前为止找不到任何东西,而且我们不希望我们的后端语言通过文件来检查这种情况,因为这将是一个完全混乱的局面


感谢您的帮助

您可以配置一个安全管理器,但它不会限制资源

您可以使用专用的类加载器加载不受信任的代码,该类加载器只能看到白名单中的类

或者您可以使用docker之类的工具在操作系统级别隔离流程。这也可以限制它的cpu和内存消耗

我可能会将这些方法结合起来,但在这两种情况下都会存在一些风险

(是的,我意识到这很复杂,但安全地沙盒任意java代码是一个困难的问题。)