Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的代码有什么问题?线程中的异常;“主要”;java.lang.NoClassDefFoundError:song(错误名称:song)_Java_Compiler Errors_Syntax Error - Fatal编程技术网

我的代码有什么问题?线程中的异常;“主要”;java.lang.NoClassDefFoundError:song(错误名称:song)

我的代码有什么问题?线程中的异常;“主要”;java.lang.NoClassDefFoundError:song(错误名称:song),java,compiler-errors,syntax-error,Java,Compiler Errors,Syntax Error,我得到这个错误,不知道为什么我的程序基本上是读取一个.txt文件并保存到一个数组?非常感谢您的帮助 error message:Exception in thread "main" java.lang.NoClassDefFoundError: song (wrong name: Song) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Sourc

我得到这个错误,不知道为什么我的程序基本上是读取一个.txt文件并保存到一个数组?非常感谢您的帮助

error message:Exception in thread "main" java.lang.NoClassDefFoundError: song (wrong name: Song)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
代码:

import java.util.*;
import java.lang.*;
import java.io.*;
import java.nio.charset.*;

class Song {
    private int songId; // The unique song identifier
    private String title; // The song title
    private String artist; // The song artist
    private String genre; // The genre of the song
    private String album; // The album name
    private String songData;

    public Song(int songId, String title, String artist, String genre,
            String album, String songData) {
        this.songId = songId;
        this.title = title;
        this.artist = artist;
        this.genre = genre;
        this.album = album;
        this.songData = songData;
    }

    public String toString() {
        return "Id: " + songId + ", Title: " + title + ", Artist: " + artist +
            ", Genre: " + genre + ", Album: " + album + ", Data: " + songData;
    }
}

class Ideone {
    public static void main (String[] args) throws java.lang.Exception {
          try {
                FileInputStream fstream = new FileInputStream("songCollection.txt");
                // use DataInputStream to read binary NOT text
                // DataInputStream in = new DataInputStream(fstream);
                BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
                String strLine;

                while ((strLine = br.readLine()) != null) {
                    String[] splitOut = strLine.split(", ");
                    for (String token : splitOut)
                        System.out.println(token);
                }
                in.close();
            } catch (Exception e) {
                System.err.println("Error: " + e.getMessage());
            }

          Readable fileSong;
            String[] songData = new Scanner(fileSong);

            while (songData.hasNextLine()) {
                String songCollection = songData.nextLine();
                songData = songCollection.split(",");

        List<Song> songs = new ArrayList<>();

        try (BufferedReader input = new BufferedReader(new InputStreamReader(
                System.in, Charset.forName("UTF-8")))) {
            String line;
            while ((line = input.readLine()) != null) {
                String[] arr = line.split(",");
                songs.add(new Song(Integer.parseInt(arr[0]), arr[1], arr[2],
                        arr[3], arr[4], arr[5]));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        for (Song song : songs) {
            System.out.println(song.toString());
        }
    }
}
import java.util.*;
导入java.lang.*;
导入java.io.*;
导入java.nio.charset.*;
班歌{
private int songId;//唯一的歌曲标识符
私有字符串标题;//歌曲标题
私人弦乐艺术家;//歌曲艺术家
私有字符串类型;//歌曲的类型
私有字符串相册;//相册名称
私有字符串数据;
公共歌曲(int songId、弦乐标题、弦乐艺术家、弦乐流派、,
字符串专辑,字符串歌曲(数据){
this.songId=songId;
this.title=标题;
这个艺术家=艺术家;
这个。流派=流派;
this.album=相册;
this.songData=songData;
}
公共字符串toString(){
返回“Id:+songId+”,标题:“+Title+”,艺术家:“+Artist”+
,流派:“+流派+”,专辑:“+专辑+”,数据:“+歌曲数据;
}
}
表意文字{
公共静态void main(字符串[]args)引发java.lang.Exception{
试一试{
FileInputStream fstream=新的FileInputStream(“songCollection.txt”);
//使用DataInputStream读取二进制而不是文本
//DataInputStream in=新的DataInputStream(fstream);
BufferedReader br=新的BufferedReader(新的InputStreamReader(fstream));
弦斯特林;
而((strLine=br.readLine())!=null){
String[]splitOut=strLine.split(“,”);
for(字符串标记:拆分)
System.out.println(令牌);
}
in.close();
}捕获(例外e){
System.err.println(“错误:+e.getMessage());
}
可读的档案歌曲;
String[]songData=新扫描程序(fileSong);
while(songData.hasNextLine()){
String songCollection=songData.nextLine();
songData=songCollection.split(“,”);
列表歌曲=新建ArrayList();
try(BufferedReader输入=新建BufferedReader(新建InputStreamReader(
System.in,Charset.forName(“UTF-8”)){
弦线;
而((line=input.readLine())!=null){
字符串[]arr=line.split(“,”);
songs.add(新歌(Integer.parseInt(arr[0]),arr[1],arr[2],
arr[3],arr[4],arr[5]);
}
}捕获(IOE异常){
e、 printStackTrace();
}
用于(歌曲:歌曲){
System.out.println(song.toString());
}
}
}

我认为您的song类抛出了一个异常,因为构造函数没有完全初始化


因为您的主方法类给出了这些错误,所以出现了问题,因为文件存储为song.java而不是song.java[注意类名中的大写字母S]

其次,确保有一个主类,以防使用命令调用程序

爪哇歌曲

另一方面,您也可能会出现以下错误。
线程“main”java.lang.NoSuchMethodError中出现异常:上面共享的代码main

甚至不可编译。请共享正确的代码。它“听起来”像是存储类名的文件以小写“s”开头,java希望它使用大写“s”您正在将六个参数传递给歌曲构造函数。是否传递了所有?…songs.add(新歌(Integer.parseInt(arr[0])、arr[1]、arr[2]、arr[3]、arr[4]、arr[5]));请向我们显示您运行此程序所使用的命令行。@MadProgrammer..只是为了澄清一下。如果文件名是小写的song,那么它应该在编译过程中被捕获。为什么会出现NoClassDefFoundError?