-8

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

请帮忙。

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

4

3 回答 3

5

您可能需要一个上下文无关的语法根据 java 的规则解析该类,并确保它确实是一个 java 有效的类。

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

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

  1. 词法分析
  2. 句法分析
  3. 语义分析
于 2012-07-17T05:34:34.383 回答
1

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

于 2012-07-17T05:37:06.137 回答
0

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

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

于 2012-07-17T07:18:05.597 回答