运行我的程序时,Java 无法找到或加载主类 [英] Java can't find or load main class when running my program

查看:86
本文介绍了运行我的程序时,Java 无法找到或加载主类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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:

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

它在 netbeans ide 上编译和运行良好,它们是那里的类文件,但它不会从命令行运行.这是程序:

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

它是用这个编译的:

javac a1_13132334.java

然后运行

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.

推荐答案

当我编译你提供的代码时

When I compile the code you provided with

javac a1_13132334.java

然后用

java a1_13132334 temp.txt

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

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.

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

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.

如果这没有帮助,您可以参考:Java 找不到主类

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

这篇关于运行我的程序时,Java 无法找到或加载主类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆