【发布时间】:2012-07-16 00:30:34
【问题描述】:
我需要编写一个 Java 应用程序来识别 Java 类并打印出“这是一个 Java 类”如果该类有错误或来自其他语言,它会打印出“这不是 Java 类”
请帮忙。
建议和源代码将不胜感激。
【问题讨论】:
-
我尝试使用 'if' 和 'else' 语句,但在定义 java 类属性时遇到了困难。
标签: java compilation
我需要编写一个 Java 应用程序来识别 Java 类并打印出“这是一个 Java 类”如果该类有错误或来自其他语言,它会打印出“这不是 Java 类”
请帮忙。
建议和源代码将不胜感激。
【问题讨论】:
标签: java compilation
您可能需要context free grammer 来根据 java 的规则解析类,并确保它确实是 java 有效的类。
JavaCC 是一个为您提供此功能的库。
您所描述的部分是在编译理论上检查程序是否有效 - 这是编译程序的第一步,也称为其(编译器)Front End。如果您想了解更多理论知识如何完成,您可能需要搜索:
【讨论】:
Runtime.getRuntime().exec("javac " + filename);什么的...
最快的方法可能是使用 Java Compiler Api 并尝试在运行时编译类。如果编译,则结果为成功,如果不是,则很难确定这是由于错误,还是因为它来自其他语言。
【讨论】:
也许你可以使用Class.forName("classname") 来加载它。如果你得到一个异常,那么它不是一个类文件。
如果它是一个非常简单的应用程序,那么也许您可以将文件作为流获取。如果前 32 位数据不是0xCAFEBABE,那么它不是类文件。 0xCAFEBABE 是类文件定义中的一个幻数。
【讨论】: