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

时间:2019-03-19 13:57:31

标签: java eclipse printf

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

Here is the debugger error message.但是,它仍然会在控制台上打印出find,并且它仅在调试器窗口上显示错误消息,并且不允许我继续存在“实际”错误的下一行。 Here is the stacktrace.

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");
}

1 个答案:

答案 0 :(得分:2)

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

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