我目前有一个Printer
可以静态访问的类,但是当我在向该类添加函数后尝试编译项目时,我得到了error: cannot find symbol
。
我知道这通常是由错别字,作用域外的引用和错误的声明引起的,但是奇怪的是,旧方法可以正常工作。
该代码与我自己的代码具有完全相同的结构,并且可以正常工作:
import java.util.*;
import java.lang.*;
import java.io.*;
class Printer {
private static String errorTitle;
private static String regularTitle;
Printer(String regularTitle_) {
errorTitle = "Some error: ";
regularTitle = regularTitle_;
}
public static void printError(Exception e) {
System.out.println(errorTitle + e.getMessage());
}
public static void print(String message) {
System.out.println(regularTitle + message);
}
}
class Main {
public static void main(String[] args) {
new Printer("Message: ");
try {
throw new Exception();
}
catch(Exception e) {
//This works
Printer.print(e.toString());
//This generates a cannot find symbol error when compiling
Printer.printError(e);
// ^ here
}
}
}
完整的错误消息是:
[javac] Compiling 1 source file to C:\Javaprojects\MyProject\alpha\build
[javac] C:\Javaprojects\MyProject\alpha\src\Main.java:35 error: cannot find symbol
[javac] Printer.printError(e);
[javac] ^
[javac] symbol: method printError(Exception)
[javac] location: class Printer
[javac] 1 error
如果我更改Printer.printError(e)
为,则效果很好Printer.print(e.toString())
。
可能是什么原因造成的?难道是我指的是某种已编译类的缓存版本?
您的代码可以,程序流程不行,但是这里不是问题。进口是唯一没有必要的东西,
删除进口:
import java.util.*;
import java.lang.*;
import java.io.*;
清理项目,然后重新生成。
如果这不起作用,请以clean模式启动eclipse,再次清理并重建项目。
添加在
问题已经解决了。实际上,是*导入引起了编译错误。
我可以访问Printer.print(String)
但不能访问Printer.print(Exception)
。
为什么会这样呢?
只要我无法Printer
在util,lang或io包中找到任何类,就可以想象得到此错误的唯一情形是:Eclipse正在导入Printer
该方法Printer.printError(Exception)
尚不存在的类的先前版本,将其汇总为import导致建筑物质量不佳,因此您在进行多次清洁时仍然遇到问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句