【问题标题】:I get NoClassDefFoundError, how can i fix it? [duplicate]我得到 NoClassDefFoundError,我该如何解决? [复制]
【发布时间】:2014-02-09 14:47:05
【问题描述】:

当我使用 eclipse 运行我的 java 应用程序时,我没有遇到任何问题,但是当我使用命令提示符运行它时,我得到 NoClassDefFoundError。

C:\Windows\System32>cd C:\Users\Caco\workspace\Bisquit_server\bin\bisquit_server
C:\Users\Caco\workspace\Bisquit_server\bin\bisquit_server>java ReceiveMsg
Exception in thread "main" java.lang.NoClassDefFoundError: ReceiveMsg (wrong nam
e: bisquit_server/ReceiveMsg)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)


C:\Users\Caco\workspace\Bisquit_server\bin\bisquit_server>

这是我的 java 代码:

package bisquit_server;
import java.io.*;
import java.net.*;

public class ReceiveMsg {

    private ServerSocket server_socket;
    private Socket socket;
    ObjectInputStream input_stream;
    private static String msg;

    public ReceiveMsg() throws IOException, ClassNotFoundException{
    try
    {

        server_socket=new ServerSocket(50000,1);
        while(true){
            listen();
            System.out.print("Server is ready to connect to a client");
            createStreams();
            initProcessing();
        }

    }
    finally {close();}
    }
    private void listen() throws IOException{
        socket= server_socket.accept();
        ReceiveMsgTh rmth = new ReceiveMsgTh();
        Thread t = new Thread(rmth);
    }
    private void createStreams() throws IOException{
        input_stream= new ObjectInputStream(socket.getInputStream());
    }
    private void initProcessing() throws ClassNotFoundException, IOException{
        msg = "";
        msg = (String)input_stream.readObject();

    }
    private void close() throws IOException{
        if (input_stream!=null && socket != null){
            input_stream.close();
            socket.close();
        }
    }

    public static void main(String[] args) //throws ClassNotFoundException, IOException 
    {
        try {
        new ReceiveMsg();
        }
        catch(ClassNotFoundException | IOException e){}
        new Store().StoreMsg(msg,new String[]{"0987654321,"1234567890"},"1234567890");
    }

}

package bisquit_server;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ReceiveMsgTh implements Runnable {

private ServerSocket server_socket;
private Socket socket;
ObjectInputStream input_stream;

public void StartProcess() throws IOException, ClassNotFoundException{
    try
    {
        server_socket=new ServerSocket(50000,1);
        while(true){
            listen();
            createStreams();
            initProcessing();
        }

}
finally {close();}
}
private void listen() throws IOException{
    socket= server_socket.accept();
}
private void createStreams() throws IOException{
    input_stream= new ObjectInputStream(socket.getInputStream());
}
private void initProcessing() throws ClassNotFoundException, IOException{
    String msg = "";
    msg = (String)input_stream.readObject();
    new Store().StoreMsg(msg,new String[]{"0987654321","1234567890"},"1234567890");

}
private void close() throws IOException{
    if (input_stream!=null && socket != null){
        input_stream.close();
        socket.close();
    }
}
@Override
public void run()  {
    // TODO Auto-generated method stub
    try {
        StartProcess();
    } catch (ClassNotFoundException | IOException e) {
        // TODO Auto-generated catch block

    }

}

}       







package bisquit_server;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Store {

public void StoreMsg(String msg, String[] mobileNumbers, String whoWrite){
    File f = new File("C:\\Users\\Caco\\workspace\\Conversations\\"+mobileNumbers[0]+mobileNumbers[1]+".txt");

    try (
            BufferedWriter bw = new BufferedWriter(new FileWriter(f,true));
        )
            {
                bw.write(whoWrite);
                bw.write(" ");
                bw.write(msg);
                bw.write("\r\n");
            }
        catch(IOException e) {
            System.out.print("Error writing file");
        }


}

}

我真的很沮丧,因为我尝试修复它三天都没有成功! 你能帮助我吗? 谢谢你

【问题讨论】:

  • 您需要转到bin 文件夹并运行java biscuit_server.ReceiveMsg。它会自动查看biscuit_server 文件夹
  • 顺便说一句,代码不可编译。
  • duffymo 我不是专业人士,我才 14 岁。

标签: java noclassdeffounderror


【解决方案1】:

只是

cd ..
java bisquit_server.ReceiveMsg

请记住,您不使用 java 命令执行文件,而是使用 。您需要为 java 命令提供完全限定的类名。

此外,必须能够找到包含该类的类文件。这是通过所谓的类路径完成的,当您不提供时,它只是当前目录。因此,要查找bisquit_server.ReceiveMsgjava 将在类路径中查找目录bisquit_server/,并在该目录中查找ReceiveMsg.class 文件。

这样,您可以从不同的位置运行您的程序:

cd /temp
java -cp C:\Users\Caco\workspace\Bisquit_server\bin  bisquit_server.ReceiveMsg

【讨论】:

    【解决方案2】:

    首先运行javac 命令以创建.class 文件。之后使用 java 命令运行

    javac ReceiveMsg.java
    

    然后

    cd..
    java bisquit_server.ReceiveMsg
    

    【讨论】:

    • @BackSlash:不,他在那个包裹里。首先阅读问题。他使用 cd 命令去那个文件夹
    • @BackSlash:是的,你是对的。对不起,我的错。我会编辑这个。
    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 2018-07-09
    • 2012-08-31
    • 2021-08-16
    相关资源
    最近更新 更多