如何编译一个被任意命名为不同于公共类名的.java文件

如何编译一个被任意命名为不同于公共类名的.java文件,java,compilation,Java,Compilation,我最近在Django上创建了一个类似codeforces.com的在线法官平台。现在,我遇到了一个问题,用户可能会上传一个Java文件进行测试,其文件名与其中定义的公共类不同。然而,我应该自动编译它。那么,有什么可能的解决办法呢 如果不正确重命名文件就无法编译文件,我需要指导如何使用脚本/代码进行“重命名”?这将是一个编译错误。文件名应与公共类名相同。 因此根本不可能这将是一个编译错误。文件名应与公共类名相同。 因此根本不可能最简单的方法可能是使用类似的方法解析上传的Java文件,然后提取包名和

我最近在Django上创建了一个类似codeforces.com的在线法官平台。现在,我遇到了一个问题,用户可能会上传一个Java文件进行测试,其文件名与其中定义的公共类不同。然而,我应该自动编译它。那么,有什么可能的解决办法呢


如果不正确重命名文件就无法编译文件,我需要指导如何使用脚本/代码进行“重命名”?

这将是一个编译错误。文件名应与公共类名相同。
因此根本不可能

这将是一个编译错误。文件名应与公共类名相同。
因此根本不可能

最简单的方法可能是使用类似的方法解析上传的Java文件,然后提取包名和顶级类名,并相应地重命名上传的文件


顺便说一句,请确保您在一个非常沙盒的环境中运行上载的代码。

最简单的方法可能是使用以下内容解析上载的Java文件,然后提取包名和顶级类名,并相应地重命名上载的文件



顺便说一句,请确保您在一个非常沙盒的环境中运行上载的代码。

那么,在这种情况下,我如何编写代码来正确重命名文件,使其能够编译?您可以使用与上载文件相同的代码创建一个新文件,使用java file io并将名称命名为公共类。您需要解析上传的文件并逐行读取,获得公共类名,并使用该名称创建包含上传文件内容的文件谢谢!这就是我要去的地方。但我觉得我可能因为缺乏知识而使事情复杂化。请相应地编辑答案!如果没有其他解决办法,我会接受的:)再次感谢!那么,在这种情况下,我如何编写一个代码来正确重命名该文件,使其能够编译?您可以使用与上载文件相同的代码创建一个新文件,使用java file io并将其命名为public类。您需要解析上传的文件并逐行读取,获得公共类名,并使用该名称创建包含上传文件内容的文件谢谢!这就是我要去的地方。但我觉得我可能因为缺乏知识而使事情复杂化。请相应地编辑答案!如果没有其他解决办法,我会接受的:)再次感谢!是的,现在看来这是最简单的方法了!谢谢,关于“沙箱”的事情,我在考虑一些更简单的选择。作为一个“新手”,我发现谷歌上的所有答案都有点复杂。您对沙盒的建议是什么?@user104014我不擅长sanboxing,您最好单独问一下。我只是想在Docker中运行整个程序,但我不确定Docker是否“无可逃避”。是的,我会的。再次感谢。是的,现在看来这是最简单的方法了!谢谢,关于“沙箱”的事情,我在考虑一些更简单的选择。作为一个“新手”,我发现谷歌上的所有答案都有点复杂。您对沙盒的建议是什么?@user104014我不擅长sanboxing,您最好单独问一下。我只是想在Docker中运行整个程序,但我不确定Docker是否“无可逃避”。是的,我会的。再次感谢,让他们失望。提交者未提交有效的Java代码。请使其失败。提交者未提交有效的Java代码。