识别Java类的Java应用程序

时间:2012-07-17 05:31:17

标签: java compilation

我需要编写一个识别java类的Java应用程序并打印出“这是一个Java类”如果该类有错误或来自另一种语言,则打印出“这不是Java类”

请帮忙。

建议和源代码将不胜感激。

3 个答案:

答案 0 :(得分:5)

您可能需要context free grammer 根据java规则解析该类,并确保它确实是一个java有效类。

JavaCC是一个为您提供此功能的库。

您所描述的部分是在编译理论中检查程序是否有效 - 这是编译程序的第一步,也称为其(编译器)Front End。如果您想了解更多理论知识,可能需要搜索:

  1. lexical analysis
  2. syntactic analysis
  3. 语义分析

答案 1 :(得分:1)

最快的方法可能是使用Java Compiler Api并尝试在运行时编译该类。如果编译则结果是成功,如果不成功则很难确定是否是由于错误,或者是因为它来自其他语言。

答案 2 :(得分:0)

也许您可以使用Class.forName("classname")加载它。如果你得到一个例外,那么它不是一个类文件。

如果它是一个非常简单的应用程序,那么也许您可以将该文件作为流。如果第一个32位数据不是0xCAFEBABE,那么它不是类文件。 0xCAFEBABE是类文件定义中的幻数。