在控制台运行java时出错:错误: 找不到或无法加载主类
java源程序在eclipse里直接运行的话没有问题,但是在控制台时出现了错误。
1. 编译
编译没有出错,.class文件也正确显示的。
2. 运行
出错了,首先,我的环境是配置好的,也就是javac xxx.java,和java xxx之前是可以正常编译和运行的。那么这儿是什么问题呢?
3. 原因
因为我的源码里有引入了一个包socket,socket就是我这个源码Server.java所在的包。这儿运行报错的原因就是引入这个包导致的。
package socket; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { //服务端打开端口8888 ServerSocket port = new ServerSocket(8888); //设置监听 System.out.println("监听端口号:" + port); Socket s = port.accept(); System.out.println("有连接过来" + s); port.close(); s.close(); } catch (IOException e) { e.printStackTrace(); } } }
4. 解决办法
方法一
因为这个文件就在这个包下,所以其实不用引入这句话也是可以编译运行的。但是你会发现在IDE里会提示出错,而且也并不推荐这种做法。
方法二
编译和运行的命令稍微改一下
编译
javac socket\Server.java
即从包名目录开始一直到源码文件
可以看到,编译正常
运行
java socket.Server
即包名.一直到字节码文件,也就是.class文件。注意这儿不是java socket\Server,而是用"."