Java - 编译并引用一个未知名称的类

时间:2017-08-29 12:29:39

标签: java linux jar javac

因此,我和我的同事一直在努力解决这个问题,我们一直在尝试一种“基准测试”计划。我们希望从用户接收.java文件,编译它并从我们自己的主类调用它。

所以我们不知道文件的名称是什么,但是它们将有一个我们可以调用的公共方法,例如main(),例如,我们希望将它们编译为类文件,例如Test1.class,Test2 .class等但是我们看到类文件的名称需要对应于其中的类。

是否还有另一种方法可以让它发挥作用?比如将它编译成.jar文件,如果我们可以通过这种方法隐式引用它? (不确定这是否可能)

最糟糕的情况是,我们可以将输入文件限制为已知的文件名,我们只是想吸引更多勤奋的头脑,如果有更优雅的解决方案我们可以利用。

1 个答案:

答案 0 :(得分:3)

简单:使用JavaParser等工具来处理您的输入。然后:将传入的类重命名为到你知道的东西。

您会看到:您很可能想要检查您获得的源代码。或者您是否真的希望允许用户将任意代码上传到您在那里执行的系统?所以 - 当您仔细分析输入以解决安全问题时 - 应该“花生”来重命名即时收到的代码。

如果这不起作用:为什么不让您的用户向您提供所有这些信息?含义:您正在处理一个复杂的问题,因为您允许用户享有很多自由度。但当你要求他们提供他们打算在上传时使用的类/文件名时,他们的体验真的会受到影响吗?