Sean Ryan
Sean Ryan

Reputation: 37

Java can't find or load main class when running my program

I have a simple program that takes a text file as input and runs kandanes algorithm on it. It compiles fine but I get this error when I try and run it:

Error: Could not find or load main class a1_13132334

It compiles and runs fine on netbeans ide and their is a class file there but it won't run from the command line. Here is the program:

import java.io.*;
public class a1_13132334
{
   public static void main(String [] args) throws IOException
   {
    //make sure the user entered a single text file
    if(args.length == 0 || args.length > 1){
        //display an error if the user didn't enter a file or entered more than one file
        System.out.println("You must enter a single file to read from");
        //exit the program if they didn't have the correct input
        System.exit(0);
    }
    else
    {
    //set up strings for reading in the file
    String values = "";
        String currentLine;
        try {
            // Generate the file stream to the file
            FileInputStream in =  new FileInputStream(args[0]);
            try {
                // Create data input stream to the file stream
                BufferedReader myInput = new BufferedReader(new InputStreamReader(in));
                try {
                    // Loop through the file one line at a time
                    while((currentLine = myInput.readLine()) != null) {  // while loop begins here
                        values += currentLine;
                    }
                }catch (Exception e) {
                    // If the file is unreadable output error message
                    System.out.println("Error: " + e);
                }
            }catch (Exception e) {
                // If the file stream is unaccessable
                System.out.println("Error: " + e);
            }
        }catch (Exception e) {
            // If the file is unopenable
            System.out.println("failed to open file " + args[0]);
            System.out.println("Error: " + e);
        }
        //split the string containing the data of the file into a string array
        String [] data = values.split(",");
        //create an array of floats to parse the values of the file into and set it to the length of the string array data
        float [] vectors = new float[data.length];
        //a for loop to go through the data array
        for(int i = 0;i< data.length;i++){
        //convert the values in the data string array into floats and put them in the vectors array
        vectors[i] = Float.parseFloat(data[i]);
        }
        //set up the floats and ints that are needed for kandanes alogorithm
        //an int to store the start index
        int maxStartIndex=0;
        //an int to store the final index
        int maxEndIndex=0;
        //a float to store the max sum
        float maxSum = Integer.MIN_VALUE; 
        // a float to store the sum if you add the current index
        float cumulativeSum= 0;
        //an int to store the start index so far
        int maxStartIndexUntilNow=0;
        //a for loop to read through the vectors array      
        for (int i = 0; i < vectors.length; i++) {
            //a float to store the current value of the array
            float eachArrayItem = vectors[i];
            //adding the value of the current index to the sum so far
            cumulativeSum+=eachArrayItem;
            //checking if adding the current value increases the max sum
            if(cumulativeSum>maxSum){
                //if it does make the maxsum include the value of the current index
                maxSum = cumulativeSum;
                //change the initial index to the max start index until now
                maxStartIndex=maxStartIndexUntilNow;
                //make the final index the current index
                maxEndIndex = i;
            }
            //if the current index doesn't increase the maxsum check if it makes it less than 0
            else if (cumulativeSum<0){
                //change the inital index to the next index
                maxStartIndexUntilNow=i+1;
                //reset the cumulative sum
                cumulativeSum=0;
            }
        }
        //print out the results
        System.out.println("initial index:\t\t\t"+maxStartIndex);
        System.out.println("final index:\t\t\t"+maxEndIndex);
        System.out.println("Value of max-sub vector:\t"+maxSum);
    }
  }
}

It is compiled using this:

javac a1_13132334.java

and run with this

java a1_13132334 d:vector25.txt

The file also definitely exists and works fine. It is part of a college assignment so it needs to be able to be run from the command line.

Upvotes: 1

Views: 1714

Answers (1)

Kialandei
Kialandei

Reputation: 394

When I compile the code you provided with

javac a1_13132334.java

And then run it with

java a1_13132334 temp.txt

I can see the program output just fine (well, I get a number format exception at least). I'd say make sure you check for your .class file after you compile and make sure you're in the correct directory.

Perhaps try taking your code example and putting it in a new file without using netbeans in a new location and try compiling and running that.

You could refer to this if this doesn't help: Java can't find main class

Upvotes: 3

Related Questions