错误: 找不到或无法加载主类 -java(7)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/babybabyup/article/details/83472456

问题描述

最近在做java程序时,在java文件所在目录下执行javac可以生成class文件,但是继续执行java命令提示错误: 找不到或无法加载主类.
问题截图

这是javac命令成功运行了,包为javanet, 其中有两个java文件Server.javaClient.java
运行java命令,则一直报错

解决方案

  • javac:此命令为java编译命令,执行是默认在当前路径下找.java文件。所以上述情况下执行成功了
  • java:此命令为java执行命令.默认先寻找java文件的package,然后寻找对应class.如果java源文件中没有包名,则是寻找当前目录下的class文件。如果二者均没有找到,转去寻找classpath。

以本情况为例

我的Server.java文件为

package javanet;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String args[]) {
        String[] answer = {"在算错的情况下", "狗就能生狗", "电视面包沙发"};
        ServerSocket serverForClicent = null;
        Socket socketOnServer = null;
        DataOutputStream out = null;
        DataInputStream in = null;
        try {
            serverForClicent = new ServerSocket(2010);
        } catch (Exception e) {
            System.out.println(e);
        }
        try {
            System.out.println("等待客户");
            socketOnServer = serverForClicent.accept();
            out = new DataOutputStream(socketOnServer.getOutputStream());
            in = new DataInputStream(socketOnServer.getInputStream());
            for (int i=0;i<answer.length;i++) {
                String s = in.readUTF();
                System.out.println("服务器收到的客户提问"+s);
                out.writeUTF(answer[i]);
                Thread.sleep(500);
            }
        } catch (Exception e) {
            System.out.println("客户已断开");
        }
    }
}

存在包名package javanet;,就需要把目录切换到javanet同级目录上执行java命令,而当我把package javanet;删掉后,就在class文件所在目录执行即可。
删掉之前在与javanet同级目录下执行java javanet/Server

删掉之后,重新编译执行

猜你喜欢

转载自blog.csdn.net/babybabyup/article/details/83472456