首页 > 解决方案 > 是否有任何命令行函数可以从巨大的 Java 文件中返回主类的名称?

问题描述

我想自动化从 Internet 下载大量 Java 文件的过程并一一测试它们。但是,大多数站点都没有指定主类的名称。因此,大多数时候,我需要手动搜索字符串“public class”以确定文件名。有没有更好的流程来做到这一点?

一般来说,代码格式为:

import ...
import ...
import ...

class A {...}
class B {...}
public class C {...}

标签: javaautomation

解决方案


grep -lP '\s*public\s+static\s+void\s+main\s*\(\s*(?:\[\s*\]\s*)?String\s*(?:\[\s*\])?\s*\w+\s*\)' *.java

上面的命令将返回一个包含 main 方法的 .java 文件列表,这只是表明每个程序的 Main 类。

如上所述,公共类并不一定意味着它是程序的主类,所以我相信在这种情况下,上面的 grep 命令是你最好的机会。

另请注意,在同一个应用程序/程序中,可能有多个包含 main 方法的类,即使实际上只有一个用作程序的入口点。


推荐阅读