我正在构建在线编译器网站。 在本地系统中执行程序,我们知道文件名和类名 例如: MyProgram.java
class MyProgram{
public static void main(String[] args){
System.out.println("Myprogram in local");//
}
}
$ javac MyProgram.java
$ java MyProgram
但在线编译用户可以拥有任何类名 例如: MyProgram.java //这可以是admin
定义的任何内容class UserProgram{
public static void main(String[] args){
System.out.println("users program");
}
}
$ javac MyProgram.java
$ java somethingthatidontknow //how do i get "users program" outpout ?
答案 0 :(得分:1)
如果类是公共的,则类的名称只能与文件的名称相同。因此,如果用户没有将该类声明为public,则无论文件名如何,代码都将编译正常。
因此,您所要做的就是找出哪个创建的.class文件包含main
方法。一种方法是在每个类文件上调用javap
并为static void main
grep输出。
请注意,当一个类 被声明为public时,这对于大多数(所有?)现有的在线IDE来说都是个问题。例如,Ideone要求您将类Main
命名为公开。