捕获Java中未解决的编译错误

捕获Java中未解决的编译错误,java,compiler-errors,runtimeexception,Java,Compiler Errors,Runtimeexception,我目前是一个使用Java的班级的助教。我试图编写一段代码来测试以确保学生的方法是正确的,但有时学生甚至不会实现该方法,或者他们会称其为不正确的东西,这显然会在运行测试代码时导致未解决的编译问题。有没有一种方法可以在运行时捕获这个错误,这样我的测试代码就可以执行,而不必处理学生提交的代码 编辑:刚刚发现编译器在运行前生成了一个未解决的编译问题。考虑到这一点,有没有办法做到我上面解释的 编辑:另外,我不能控制分配的结构,所以我不能引入接口或存根等 如果我是助教,我会写一些单元测试,并告诉学生通过测

我目前是一个使用Java的班级的助教。我试图编写一段代码来测试以确保学生的方法是正确的,但有时学生甚至不会实现该方法,或者他们会称其为不正确的东西,这显然会在运行测试代码时导致未解决的编译问题。有没有一种方法可以在运行时捕获这个错误,这样我的测试代码就可以执行,而不必处理学生提交的代码

  • 编辑:刚刚发现编译器在运行前生成了一个未解决的编译问题。考虑到这一点,有没有办法做到我上面解释的
  • 编辑:另外,我不能控制分配的结构,所以我不能引入接口或存根等

    • 如果我是助教,我会写一些单元测试,并告诉学生通过测试。让他们尽早进行测试


      如果代码没有编译,那么在运行时检测它是没有意义的。如果无法编译,则无法运行

      如果使用反射,则可以检查该方法是否存在,调用方法,并迭代现有方法以可能找到学生的方法


      有关从文件加载学生代码的信息,请参见UrlClassLoader类

      如果我理解你的问题,你是在尝试验证学生实现的接口以及实现的正确性。反射API允许确定类是否实现了正确的API,如果实现了,则调用该API。查看java.lang.Class、java.lang.Method等。

      听起来您现在已经进入了课程的面向对象部分。我认为创建一个超级类是一个好主意,它将所有指定的方法都删除了。然后学生可以简单地扩展这个超级类并实现这些方法。你的存根应该抛出一个RuntimeException,它会导致相应的单元测试失败。这应该允许您创建单元测试,而不必太担心学生没有实现特定的方法。

      作为任务描述的一部分,您不能为他们提供一个并“让”他们实现它吗?我认为这应该是一个更简单的解决方案\这肯定会更好,但我必须依赖老师为他们提供的,通常老师不提供接口。你想如何将验证器链接到学生的代码?他们只是提供一个方法,然后你把它粘贴到你的源代码中并编译它吗?我猜@amit comment提供了答案……有几个人提到了反思,这正是我所寻找的。我发现了一个很好的链接。还考虑编写一个类加载器来从一个命名的jar中提取代码。我的工作就是评分。如果我想自动化一个测试用例,如果他们不实现这个方法,他们就得不到分数,但是如果他们实现了其他所有东西,然后,他们就可以在没有整个测试崩溃的情况下获得分数。说服讲师将作业纳入单元测试framework@hvgotcodes它完全可以在不编译的情况下运行。不是如果它是主类,而是稍后调用的另一个类。或者,它可以完美地编译和运行,但后来由于某种原因,一些辅助JAR被删除,应用程序在运行时会失败。在这个主题上进行快速的Google搜索表明,反射可能就是我要寻找的。非常感谢。如果你有任何关于反思的好链接,请随时发布!我会的,但我在移动设备上=)很难在ipod上获得链接。我不知道反射。也谢谢你。听起来是个好主意,如果我能更好地控制作业,我会这么做。我应该对我的问题进行编辑,说明这一点,但我无法控制作业的创建。我纯粹是一个成绩评定者。