当前位置: 首页 > 面试题库 >

出现编译错误时eclipse如何执行Java代码

钱经赋
2023-03-14
问题内容

当以下Java代码在eclipse中执行时,它会提供正确的输出(即打印“ Class
B”),但是根据Java规范,该代码无法编译(因为超类构造函数需要一个int参数,并且构造函数由B类的编译器包括对超类no
arg构造函数的调用(未定义),并且当尝试在命令行中使用javac命令编译文件时,它仅编译超类(即A类),并因以下编译而失败错误:

B.java:8: cannot find symbol
symbol  : constructor A()
location: class A
public class B extends A {
   ^
1 error

以下是java文件的内容:

class A {

    public A(int x) {
        //
    }
}

public class B extends A {

    public static void main(String[] args) {
        System.out.println("Class b");
    }
}

有人可以解释eclipse如何在没有bieng能够编译类的情况下执行main方法。提前致谢。

更新

我删除了eclipse在bin文件夹中创建的.class文件,并尝试执行该类,该文件无法编译,因此无法运行。但是,当我使用公共类名创建一个源文件并保存而没有任何内容,然后添加以上内容时,它就可以了。如果eclipse使用先前编译的版本执行,main由于main成功完全编译时没有该方法,它将如何给出方法的输出?


问题答案:

Eclipse使用自己的Java编译器(称为ecj)代替javac。该编译器允许(部分)编译损坏的源文件。

Eclipse使用了自己的特殊编译器。被称为“ ecj”。来自问题javac和Eclipse编译器有什么区别?:

一个显着的区别是Eclipse编译器使您可以运行实际上未正确编译的代码。如果永远不会运行带有错误的代码块,则您的程序将正常运行。否则,它将引发异常,表明您试图运行未编译的代码。



 类似资料:
  • 以下java代码在eclipse中执行时,给出了正确的输出(即打印出'ClassB'),但根据java规范,代码无法编译(因为超类构造函数需要参数,编译器提供给类B的构造函数包括对超类no arg构造函数的调用,未定义),并且在命令行中尝试使用javac命令编译文件时,只编译超类即类a,失败,出现以下编译错误: 以下是java文件内容: 有人能解释一下eclipse是如何在没有bieng的情况下执

  • 我正在尝试为协议缓冲区构建Java运行时库。我在Windows和OS X上都犯了错误,因为我遵循了Protocol Buffers项目(从中克隆而来)中Java目录下的自述指令https://github.com/google/protobuf). 当我在protobuf/java目录下运行

  • C:\Users\SAYAN\Desktop\block-ch\project\khs-blockchain-java-example-master\src\main\java\simple\chain\Block.java:[51,29] 错误:-source 1.5 不支持 lambda 表达式 我已经安装了jdk 1.8。我仍然收到这个错误。需要帮助!!!

  • 我有一个maven项目,并尝试进行maven安装。在执行maven安装时,我遇到以下错误。 上面是我在上面的错误消息包中尝试做一个干净install.The指定的包时收到的错误com.cx.util作为itt.jar.的一部分提供。该jar已作为依赖项添加到该项目中。我在eclipse中没有看到任何错误。只有在尝试安装时,我才收到上面的编译错误。 下面的分析完成了吗 检查依赖项,jar作为pom中

  • 问题内容: 使用JDK 11,Eclipse 2019-03和jaxb- api(版本2.4,最新版本在maven存储库中可用)时,Eclipse中的Java编辑器会突出显示以下行: 作为错误: 包javax.xml可以从多个模块访问:未命名的java.xml 但是代码已编译,并且“问题”选项卡中未显示任何错误。删除jaxb-api依赖关系会使错误消失。该项目中的jaxb-api位于类路径上,并包

  • 问题内容: 作为建议在这里,我已成功安装了微软的Visual C ++编译器为Python 2.7 编译一些用Cython代码,但是: 仍然产生: 错误:找不到vcvarsall.bat 如何使用Python 2.7编译Cython代码(例如在Windows 7 x64上)? 注意:我已经仔细阅读了以下错误问题:找不到vcvarsall.bat,但是主要答案(包括修改)都无法解决。 问题答案: 我