【问题标题】:Java Application that recognizes a Java Class [closed]识别 Java 类的 Java 应用程序 [关闭]
【发布时间】:2012-07-16 00:30:34
【问题描述】:

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

请帮忙。

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

【问题讨论】:

  • 我尝试使用 'if' 和 'else' 语句,但在定义 java 类属性时遇到了困难。

标签: java compilation


【解决方案1】:

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

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

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

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

【讨论】:

  • 本质上是构建一个迷你编译器。就这么简单
  • 或者Runtime.getRuntime().exec("javac " + filename);什么的...
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 2010-09-16
      相关资源
      最近更新 更多