java编译通过,运行却提示找不到或无法加载主类的解决方案

简介: java编译通过,运行却提示找不到或无法加载主类的解决方案

一、问题描述

java(javac HelloWorld.java)编译通过,(java HelloWorld)运行却 提示找不到或无法加载主类 的一般多见过java初上手,使用命令行的方式运行java程序,一般使用IDE工具是不会遇见的。


二、分析和解决

既然javac编译已经通过,这说明变量 JAVA-HOME 已经配置的没有问题了。


第一种可能就是:问题就出在Path变量对应的变量值上或者是新建用户变量classpath上有问题,你重新配置一下。Path对应的变量值是在原来的变量值前面加上%Java_Home%;而classpath对应的变量值应该设为 .;(注意是英文字符)


第二种可能就是:你的环境变量都是正确的,只是你编译的java源文件中,主函数public static void main(String args[]){}没有写在main这个类中。一个java源文件可以写很多类,编译的时候javac源文件之后,每个类生成一个class文件。你去运行的时候,并不一定是java源文件名,而是去找java主函数所在的那个类名。


第三种可能就是: 你在写java源代码时加了包名,你把它删掉试试或使用javac编译的时候后面加上-d . 即:javac HelloWorld.java -d . 然就再运行的时候加上包名即可。



第四种可能就是: 当前用户权限不够,使用管理员权限运行cmd窗口再试试。也可以尝试在当前cmd 运行 SET CLASSPATH=. 即可设置解释的路径为当前路径,然后再运行java HelloWorld


最后的解决办法:先把原有的java环境变量全删除,按照 windows 10 配置Java 环境变量 重新配置java环境变量,并重启电脑再进行尝试。


需要注意的是:

再尝试完一种方法进行测试时,需要重新打开cmd窗口,不要一直开着cmd的界面反复进行测试,那样会一直按修改前的系统变量执行的。


目录
相关文章
|
6天前
|
监控 Java Maven
使用AspectJ实现Java代码的运行时织入
使用AspectJ实现Java代码的运行时织入
|
8天前
|
存储 NoSQL 算法
实现分布式锁的Java解决方案
实现分布式锁的Java解决方案
|
10天前
|
安全 Java Apache
Java中的单点登录(SSO)解决方案
Java中的单点登录(SSO)解决方案
|
10天前
|
Java 编译器 API
Java中的动态编译与运行
Java中的动态编译与运行
|
5天前
|
消息中间件 Java 中间件
Java面试题:解释分布式事务的概念,讨论常见的分布式事务解决方案。
Java面试题:解释分布式事务的概念,讨论常见的分布式事务解决方案。
10 0
|
5天前
|
设计模式 安全 Java
Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
14 0
|
7天前
|
存储 NoSQL 算法
实现分布式锁的Java解决方案
实现分布式锁的Java解决方案
|
7天前
|
Java 调度
Java并发编程中的常见陷阱及解决方案
Java并发编程中的常见陷阱及解决方案
|
8天前
|
监控 Java Maven
使用AspectJ实现Java代码的运行时织入
使用AspectJ实现Java代码的运行时织入
|
8天前
|
消息中间件 Java 数据库
实现Java中的分布式事务管理的挑战与解决方案
实现Java中的分布式事务管理的挑战与解决方案