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

问题描述

最近在做java程序时,在java文件所在目录下执行javac可以生成class文件,但是继续执行java命令提示错误: 找不到或无法加载主类.
问题截图
错误: 找不到或无法加载主类 -java(7)_第1张图片
这是javac命令成功运行了,包为javanet, 其中有两个java文件Server.javaClient.java
运行java命令,则一直报错
错误: 找不到或无法加载主类 -java(7)_第2张图片

解决方案

  • 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

存在包名package javanet;,就需要把目录切换到javanet同级目录上执行java命令,而当我把package javanet;删掉后,就在class文件所在目录执行即可。
删掉之前在与javanet同级目录下执行java javanet/Server
错误: 找不到或无法加载主类 -java(7)_第3张图片
删掉之后,重新编译执行
错误: 找不到或无法加载主类 -java(7)_第4张图片

你可能感兴趣的:(java)