Eclipse如何创建一个存在未解决编译问题的类?
Eclipse使用自己独特的编译器ecj。与javac(Java编译器)相比,Eclipse编译器有一个显著的区别:它允许运行未经正确编译的代码。如果包含错误的代码块从未执行过,程序将正常运行。否则,它将抛出一个异常,指示你试图运行无法编译的代码。
因此,Eclipse可以创建具有未解决编译问题的类。这可能会导致一些问题,因为未解决的编译问题可能会导致代码无法正常工作或导致运行时错误。
为了解决这个问题,我们可以采取以下方法之一:
1. 修复代码中的编译错误。在Eclipse中,可以通过查看错误标记和错误消息来找到编译错误的位置。根据错误消息进行修复,并确保代码能够成功编译。
2. 禁用Eclipse编译器的特性,使其与标准的Java编译器(javac)行为一致。可以通过在Eclipse的首选项中进行设置来实现。在菜单栏中选择Window -> Preferences,然后选择Java -> Compiler。在Compiler实现字段下,选择"javac"作为编译器实现。这样,Eclipse将使用标准的Java编译器进行编译,从而强制执行严格的编译规则。
3. 使用代码静态分析工具来检测和修复编译错误。这些工具可以帮助发现潜在的编译问题,并提供相应的修复建议。常用的工具包括FindBugs、Checkstyle和PMD等。
通过采取这些措施,我们可以解决Eclipse创建具有未解决编译问题的类的问题,并确保代码能够正确编译和运行。
在Eclipse中创建一个类时出现未解决的编译问题是由于Eclipse使用的编译器与标准的Java编译器不同所导致的。以下是类文件的反编译代码:
public static void main(String[] paramArrayOfString) { throw new Error("Unresolved compilation problem: \n\tType mismatch: cannot convert from long to int.\n"); }
Eclipse使用的是Eclipse Compiler for Java,而不是javac。因此,即使从JDK工具包中删除了javac.exe文件,仍然可以在Eclipse中编译.java文件。
Eclipse自带的编译器的优势在于,你可以在Eclipse中编写、编译和运行Java代码,而无需安装Java SDK。这个问题的答案中有这样一句话:“Eclipse自带的编译器的事实也表明了这一点。”希望这能解答你的好奇心。
因此,要解决Eclipse中创建类时出现的未解决的编译问题,可以考虑以下解决方法:
- 检查代码中是否存在类型不匹配的问题,例如将long类型转换为int类型;
- 检查是否存在其他语法错误或编译错误,并进行相应的修正;
- 确保使用的是正确的Java编译器,可以尝试在Eclipse中切换编译器版本;
- 确保安装了适当的Java SDK,并配置了正确的环境变量。
通过以上方法,应该能够解决Eclipse中创建类时出现的未解决的编译问题。
Eclipse在创建类时可能会出现未解决的编译问题,这是由于Eclipse使用了IBM编译器,该编译器有一个选项可以创建无法编译的类,将错误替换为
throw new Error();
。然而,这种做法非常不好,可能导致项目质量低下,编译时间长。与尽快发现错误并最小化修复成本的快速失败策略不同,尽可能晚地发现错误也会最大化修复成本。这种策略只适用于快速编写原型代码的情况,即明确知道代码永远不会进入生产环境的情况下。这样做可能导致问题最终爆发。为了避免将错误带入生产环境,写代码时应该尽量在编译时让代码出错,而不是将错误掩盖起来。Eclipse提供的内容辅助、自动修正、高亮显示、包资源管理器等功能,几乎不会让这样的错误漏掉。对于测试不会编译的类,例如在实现接口后,必须编写几个无用的返回来测试单个方法...我认为这会引起固执的讨论,我只是想提供一种替代方案。在运行甚至不能编译的代码时是不应该有机会的。模拟代码是处理测试中的接口的更好方法。Eclipse编译器允许这样做的优点在于,您可以在自己的计算机上运行已存在的代码,同时编写尚未编译的新代码。然而,劣势在于,您开始认为这是一个好主意,而实际上您想要的是在发现错误尽早且最小化修复成本的高质量代码。有些项目的代码质量很差,故意发布不能编译的代码是一件坏事。您提到的“非常低质量的项目”是否会从引入构建机器人中受益呢?确实如此,但您不应该检查不能编译的代码。我认为这不是一个值得鼓励的做法。在一个相对大型的项目中,有时候这是非常有用的。您可以专注于测试/调试自己的代码,而不会浪费时间去解决不必要的问题。我会解决人们提交的代码质量实际问题,而不是让代码编译通过是否是设置标准太高的问题。但不幸的是,您并不总是对他人拥有如此多的控制权。这引出了一个有趣的问题:是否有一种快速的方式来扫描类路径上的每个jar文件,以查看其中是否有类存在编译问题?您可以这样做,但最好的做法是在编译时让编译器告诉您。编译器已经在告诉我这个问题;问题是并不是每个开发者都花时间注意到这样的细节;当然,可以清理和重新构建所有内容以自动检查这一点,但我认为在类路径上扫描存在未解决的编译问题的类将是一个非常好(且快速)的第一步,以便可以立即拒绝不完整的构建。如果开发人员的代码没有完全编译,让持续集成服务器来处理更长时间的测试。我真的认为这是一个培训问题。应确保在第一时间就避免发生这种情况。我建议您使用类似于maven和持续集成的工具,而不是传递在某个PC上构建的JAR文件。那么,我们如何在Eclipse中禁用这个IBM编译器选项呢?