运行我的程序时 Java 无法找到或加载主类

标签 java runtime runtime-error

我有一个简单的程序,它以文本文件作为输入并对其运行 kandanes 算法。它编译得很好,但当我尝试运行它时出现此错误:

错误:无法找到或加载主类 a1_13132334

它在 netbeans ide 上编译并运行良好,并且它们是一个类文件,但它不会从命令行运行。这是程序:

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

它是用这个编译的:

javac a1_13132334.java

并用它运行

java a1_13132334 d:vector25.txt

该文件也确实存在并且工作正常。它是大学作业的一部分,因此需要能够从命令行运行。

最佳答案

当我编译您提供的代码时

javac a1_13132334.java

然后运行它

java a1_13132334 temp.txt

我可以很好地看到程序输出(好吧,我至少得到了一个数字格式异常)。我想说的是,请确保在编译后检查 .class 文件并确保位于正确的目录中。

也许尝试将您的代码示例放入一个新文件中,而不在新位置使用 netbeans,然后尝试编译并运行它。

如果这没有帮助,您可以引用:Java can't find main class

关于运行我的程序时 Java 无法找到或加载主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32612733/

相关文章:

java - Intellij IDEA + JBoss 在运行时编译时不更新 LESS 文件

haskell - 如何测量 Haskell 程序的顺序和并行运行时间

vba - 如果存在旧的未读邮件,请发送电子邮件

c - 程序崩溃并返回代码 255

java - 是否会在每次迭代时评估此代码?

java - org.springframework.web.client.RestClientException : No HttpMessageConverter for java. util.HashMap 中出现错误

使用pdfview库的java版本差异很重要吗?

xamarin - 如何根据view.Width动态自动设置FontSize?

java - Hadoop 文件系统中的通配符列出 API 调用

MySQL:更改表后表崩溃