首页 > 解决方案 > 当相同的 printf 方法在控制台上正确打印出来时,如何解决 Eclipse 调试器窗口上的 java printf 问题(“找不到源。”)?

问题描述

我的代码没有运行,所以我使用了 eclipse 调试器,当我到达 printf 部分时,它显示了一条错误消息:找不到源。

这是调试器错误消息。但是,它仍然会在控制台上打印出 find ,并且仅在调试器窗口上显示错误消息,并且不会让我继续执行存在“真实”错误的下一行。 这是堆栈跟踪。

System.out.printf("a: %d\n", curElement.a);
System.out.printf("%d %d %d %d   ", curElement.a, curElement.b, curElement.c, curElement.io);

上面的这两行似乎在调试器窗口上有“找不到源”错误。你能帮我解决我的printf问题吗?谢谢你。

public class Scheduling2 {
    public static void main(String args[]) {

    try {
        String fileAddress = args[0];
        File fileInput  = new File(fileAddress); //Read
        Scanner scan    = new Scanner(fileInput);
        int numProcesses  = scan.nextInt();
        Queue<Process> processes = new LinkedList<Process>();
        ArrayList<Process> allProcesses = new ArrayList<Process>();
        //LinkedList processes = new LinkedList(); //No need to define the size
        int currNumProcesses = 0;

        //Adding each process to processes queue
        for (int m = 0; m < numProcesses; m++) {
            int a = scan.nextInt();
            int b = scan.nextInt();
            int c = scan.nextInt();
            int io = scan.nextInt();
            Process thisProcess = new Process(a, b, c, io); 
            thisProcess.id = m;
            processes.add(thisProcess);
            allProcesses.add(thisProcess);
            currNumProcesses++;
        }
        printQueue(processes, numProcesses);
        FCFS(processes, numProcesses, allProcesses);
        printQueue(processes, numProcesses);
    }   
    catch (Exception e){
        e.printStackTrace();
            System.out.printf(" Error: File not foundd. \n");
    }
}
public static void printQueue (Queue processes, int numProcesses) {
    Process curElement = (Process) processes.poll();
    System.out.printf("The original input was:  ");
    while(curElement != null) { 
        System.out.printf("a: %d\n", curElement.a);
        System.out.printf("%d %d %d %d   ", curElement.a, curElement.b, curElement.c, curElement.io);
        curElement = (Process) processes.poll();
    }
    System.out.print("\n\n");
}

标签: javaeclipseprintf

解决方案


使用调试器时,当您“进入”任何方法时,它会尝试向您显示该方法的源代码。如果找不到源,它仍然可以步进,但无法显示相应的源。如果它不能步进,它仍然可以执行代码。

您的“FileNotFound”异常告诉您它找不到您的代码尝试打开的文件(或者可能是您尝试在其中创建文件的文件夹)。请记住,任何相对文件位置都取决于知道运行代码的进程从哪个“默认目录”开始。您可以通过确保只有绝对文件位置(即从驱动器上的根目录开始的位置)来解决该问题,尽管这对于编写在不同机器上运行的程序可能是个问题。不过,对于学习时的练习,我认为这样做很好。


推荐阅读