0

このコードを実行すると、次のエラーが発生します。

これが完全なStackflowです。入力をいただければ幸いです。

Exception in thread "main" java.lang.NoClassDefFoundError: ExecuteQuiz
Caused by: java.lang.ClassNotFoundException: ExecuteQuiz
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

なぜですか?プロジェクトに関係する他の7つのクラスがありますが、このエラーは発生していません。

    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Scanner;

    public class ExecuteQuiz {

    static Scanner input = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        // ask the user for the filename
        Scanner scan = new Scanner(System.in);

        System.out.print("Which quiz are you taking? ");
        String theFile = scan.nextLine(); // file may contain more than one word
        File fileIn = new File(theFile);

        // ask the user for another filename if the given file doesn't exist
        // exists() method in File class - checks whether file
        // exists and is readable
        while (!fileIn.exists()) {
            System.out.print("Invalid file name! Try again: ");

            theFile = scan.nextLine();

            fileIn = new File(theFile);
        }

        // have a valid file name, create a Scanner object
        Scanner fileScan = new Scanner(fileIn);

        // An arraylist of ALL problems.
        ArrayList<Problem> problems = new ArrayList<Problem>();

        // process the file
        while (fileScan.hasNextLine()) {
            String type = scan.nextLine(); // Get the line in a string
            String question = scan.nextLine();

            switch (type) {
            case "W":
                String WAnswer = scan.nextLine();
                WProblem w = new WProblem(question, WAnswer);
                problems.add(w);
                break;
            case "T":
                String TString = scan.nextLine(); // Gets the string
                boolean TAnswer = Boolean.parseBoolean(TString); // Converts to
                                                                    // boolean
                TProblem t = new TProblem(question, TAnswer); // Creates the
                                                                // object
                problems.add(t);
                break;
            case "N":
                String Nanswer = scan.nextLine();
                NProblem n = new NProblem(question, Nanswer);
                problems.add(n);
                break;
            case "S":
                ArrayList<String> options = new ArrayList<String>();
                // Get the answer and add it to the options
                String SAnswer = input.nextLine();
                options.add(SAnswer);

                // add the rest of options
                while (input.nextLine() != null) {
                    String option = input.nextLine();
                    options.add(option);
                }
                // Create new objects
                SProblem s = new SProblem(question, SAnswer, options);

                problems.add(s);
                break;
            case "M":
                ArrayList<String> MAnswer = new ArrayList<String>();
                ArrayList<String> MOptions = new ArrayList<String>();

                // Find all the answers
                while (input.nextLine() != null) {
                    String answer = input.nextLine();
                    MAnswer.add(answer);
                    MOptions.add(answer);
                }

                // get the rest of the options
                while (input.nextLine() != null) {
                    MOptions.add(input.nextLine());
                }

                MProblem m = new MProblem(question, MAnswer, MOptions);
                problems.add(m);
                break;
            case "O":
                // Adding answers into an arraylist
                ArrayList<String> OrderedAnswer = new ArrayList<String>();

                // Add the answers in order
                while (input.nextLine() != null) {
                    OrderedAnswer.add(input.nextLine());
                }
                OProblem o = new OProblem(question, OrderedAnswer);
                problems.add(o);
                break;
            }
            // Analyze the type of problem

        }
    }
}
4

3 に答える 3

1

クラスには、コンパイル時の大きな問題があります。コードをコンパイルしてチェックしたこともありますか..??

switchcaseがコンパイルでエラーを出している:互換性のないタイプ

クラスがコンパイルされておらず、直接実行しようとしています。したがって、クラス定義でエラーが見つかりませんでした。

パーツを変更してみてください:

case "W": 

case 1:

コンパイルしてから実行

私は以下のコードを使用しました:

import java.io.File;
import java.io.IOException;

import java.util.ArrayList;
import java.util.Scanner;


public class ExecuteQuiz {

    static Scanner input = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        // ask the user for the filename
        Scanner scan = new Scanner(System.in);

        System.out.print("Which quiz are you taking? ");
        String theFile = scan.nextLine(); // file may contain more than one word
        File fileIn = new File(theFile);

        // ask the user for another filename if the given file doesn't exist
        // exists() method in File class - checks whether file
        // exists and is readable
        while (!fileIn.exists()) {
            System.out.print("Invalid file name! Try again: ");

            theFile = scan.nextLine();

            fileIn = new File(theFile);
        }

        // have a valid file name, create a Scanner object
        Scanner fileScan = new Scanner(fileIn);

        // An arraylist of ALL problems.
        ArrayList<Problem> problems = new ArrayList<Problem>();

        // process the file
        while (fileScan.hasNextLine()) {
            int type = Integer.parseInt(scan.nextLine()); // Get the line in a string
            String question = scan.nextLine();

            switch (type) {
            case 1:
                String WAnswer = scan.nextLine();
                WProblem w = new WProblem(question, WAnswer);
                problems.add(w);
                break;
            case 2:
                String TString = scan.nextLine(); // Gets the string
                boolean TAnswer = Boolean.parseBoolean(TString); // Converts to
                // boolean
                TProblem t = new TProblem(question, TAnswer); // Creates the
                // object
                problems.add(t);
                break;
            case 3:
                String Nanswer = scan.nextLine();
                NProblem n = new NProblem(question, Nanswer);
                problems.add(n);
                break;
            case 4:
                ArrayList<String> options = new ArrayList<String>();
                // Get the answer and add it to the options
                String SAnswer = input.nextLine();
                options.add(SAnswer);

                // add the rest of options
                while (input.nextLine() != null) {
                    String option = input.nextLine();
                    options.add(option);
                }
                // Create new objects
                SProblem s = new SProblem(question, SAnswer, options);

                problems.add(s);
                break;
            case 5:
                ArrayList<String> MAnswer = new ArrayList<String>();
                ArrayList<String> MOptions = new ArrayList<String>();

                // Find all the answers
                while (input.nextLine() != null) {
                    String answer = input.nextLine();
                    MAnswer.add(answer);
                    MOptions.add(answer);
                }

                // get the rest of the options
                while (input.nextLine() != null) {
                    MOptions.add(input.nextLine());
                }

                MProblem m = new MProblem(question, MAnswer, MOptions);
                problems.add(m);
                break;
            case 6:
                // Adding answers into an arraylist
                ArrayList<String> OrderedAnswer = new ArrayList<String>();

                // Add the answers in order
                while (input.nextLine() != null) {
                    OrderedAnswer.add(input.nextLine());
                }
                OProblem o = new OProblem(question, OrderedAnswer);
                problems.add(o);
                break;
            }
            // Analyze the type of problem

        }
    }
}
于 2013-03-15T05:03:25.070 に答える
0

ExecuteQuizクラスがクラスパス上にないようです。クラスパスに設定します。

Windowsを使用している場合は、次のように設定できます

set CLASSPATH=%CLASSPATH%.;
于 2013-03-15T05:01:23.867 に答える
0

これはコンパイラエラーではありません。

Javaアプリケーションを起動する一般的な方法は次のとおりです。java -classpath <path> FullyQualifiedClassName

あなたの場合のFullyQualifiedClassNameはExecuteQuiz

コンパイルすると、クラスはクラスに一致するディレクトリ構造を形成します。そのツリーのルートをクラスパスの一部として提供します。jarなどの他の依存関係も追加する必要があります。

クラスの検索方法に関する詳細情報

于 2013-03-15T05:01:51.997 に答える