Как решить проблему java printf («источник не найден») в окне отладчика Eclipse, когда тот же метод printf правильно выводит его на консоль? - PullRequest
0 голосов
/ 19 марта 2019

Мой код не запускался, поэтому я работал с отладчиком 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");
}

1 Ответ

2 голосов
/ 19 марта 2019

При использовании отладчика, когда вы «входите» в любой метод, он пытается показать вам источник этого метода. Если он не может найти источник, он все еще может выполнить шаг, но не может показать вам соответствующий источник. Если он не может перейти, он все равно может выполнить код.

Ваше исключение "FileNotFound" говорит вам, что он не может найти файл, который пытается открыть ваш код (или, возможно, папку, в которой вы пытаетесь создать файл). Имейте в виду, что любое относительное расположение файла зависит от знания «каталога по умолчанию», с которого начинается процесс, выполняющий ваш код. Вы можете решить эту проблему, гарантируя, что у вас есть только абсолютные местоположения файлов (то есть, те, которые начинаются с корневого каталога на диске), хотя это может быть проблемой для написания программ для запуска на разных машинах. Для упражнения во время обучения, я думаю, это нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...