Doug Smith
Doug Smith

Reputation: 29326

Why does Eclipse show me a "Source not found" error?

Here's what it looks like:

enter image description here

And here's my code:

import java.util.*;
import java.io.*;

public class ProcessSchedulingDemo {
    public static void main(String[] args) throws IOException {
        File file = new File("process-schedule.txt");
        Scanner inputFile = new Scanner(file);

        ArrayList<Process> processes = new ArrayList<Process>();

        // Skip past the first line, which is the column headers
        inputFile.nextLine();

        while (inputFile.hasNext()) {
            int processID = Integer.parseInt(inputFile.next());
            int timeUnitsRequired = Integer.parseInt(inputFile.next());
            int priority = Integer.parseInt(inputFile.next());
            int timeOfArrival = Integer.parseInt(inputFile.next());

            // Create and add to process a new process based on the information given
            Process process = new Process(processID, timeUnitsRequired, priority, timeOfArrival);
            processes.add(process);
        }

        Scanner keyboard = new Scanner(System.in);

        System.out.print("How much time does the CPU hold onto each process? ");
        int holdTime = keyboard.nextInt();

        if (holdTime <= 0) {
            while (holdTime <= 0) {
                System.out.print("Value must be greater than 0. Please input new value: ");
                holdTime = keyboard.nextInt();
            }
        }

        Heap<Process> processHeap = new Heap<Process>();

        // Holds a particular process being processed
        Process[] CPU = new Process[1];
        CPU[0] = null;

        int turn = 1;

        int timeSlices = 0;

        do {
            // Check if the list of processes has processes that should be added at the current turn
            for (int i = processes.size() - 1; i >= 0; i--) {
                if (processes.get(i).getTimeOfArrival() == turn) {
                    processHeap.add(processes.remove(i));
                }
            }

            // Print current standing of the processHeap at the beginning of the turn
            processHeap.enumerate();

            // If there currently isn't an item being processed by the CPU
            if (CPU[0] == null) {
                CPU[0] = processHeap.deleteMax();
                timeSlices = holdTime;
                System.out.println("got to cpu setting");
            }

            if (CPU[0].getTimeUnitsRequired() == 0 || timeSlices == 0) {
                if (CPU[0].getTimeUnitsRequired() > 0) {
                    processHeap.add(CPU[0]);
                }

                CPU[0] = null; 
            }
            else {
                CPU[0].setTimeUnitsRequired(CPU[0].getTimeUnitsRequired() - 1);
                timeSlices--;

                if (CPU[0].getTimeUnitsRequired() == 0 || timeSlices == 0) {
                    if (CPU[0].getTimeUnitsRequired() > 0) {
                        processHeap.add(CPU[0]);
                    }

                    CPU[0] = null;
                }
            }

            if (CPU[0] != null) {
                System.out.println("-- STATE OF CPU --");
                System.out.println("[" + CPU[0].getProcessID() + ", " + CPU[0].getTimeUnitsRequired() + ", " + CPU[0].getPriority() + "]\n");
            }

            turn++;
        } while (processes.size() != 0 && processHeap.size() != 0);
    }
}

What on earth is causing it? EVERY time I save it pops up. Argh. (Using Eclipse)

Upvotes: 0

Views: 1738

Answers (2)

Ankit jain
Ankit jain

Reputation: 4328

Eclipse debugging works with the class actually loaded by the program.

Something you installed wrong to some file is missing in your project that why you get this errorThis can happen for several reasons but have a look at the location where the classes showing this behaviour is found (look in the navigation pane to identify it). You will most likely need to change the build path of the project to avoid using this jar and have the JVM use the project instead

you can use this link to solved your problem - http://www.vogella.com/articles/Eclipse/article.html#classpath

Please update your java and Eclipse.

Upvotes: 1

austin
austin

Reputation: 5876

Scanner is part of the Java run time libraries, provided by Oracle (if you're using the Oracle JDK). I think it should be included with the JDK as a file called src.zip. You can click the Edit Lookup Path button and add this file. It should be in your Java JDK install directory.

Upvotes: 4

Related Questions