我需要编写一个识别java类的Java应用程序并打印出“这是一个Java类”如果该类有错误或来自另一种语言,则打印出“这不是Java类”
请帮忙。
建议和源代码将不胜感激。
答案 0 :(得分:5)
您可能需要context free grammer 根据java规则解析该类,并确保它确实是一个java有效类。
JavaCC是一个为您提供此功能的库。
您所描述的部分是在编译理论中检查程序是否有效 - 这是编译程序的第一步,也称为其(编译器)Front End。如果您想了解更多理论知识,可能需要搜索:
答案 1 :(得分:1)
最快的方法可能是使用Java Compiler Api并尝试在运行时编译该类。如果编译则结果是成功,如果不成功则很难确定是否是由于错误,或者是因为它来自其他语言。
答案 2 :(得分:0)
也许您可以使用Class.forName("classname")
加载它。如果你得到一个例外,那么它不是一个类文件。
如果它是一个非常简单的应用程序,那么也许您可以将该文件作为流。如果第一个32位数据不是0xCAFEBABE
,那么它不是类文件。 0xCAFEBABE
是类文件定义中的幻数。