运行Java cmd程序 找不到或无法加载主类怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行Java cmd程序 找不到或无法加载主类怎么解决相关的知识,希望对你有一定的参考价值。

//这个问题原因有以下几种,但是和环境变量并没有太大的关系
//能够执行java 和 javac 就证明你的环境变量已经配置好了,其实 classpath 可以不配置
//假如有如下文件:H:\code\Hello.java
public class Hello public static void main(String[]args) System.out.println("Hello"); //正确编译命令: javac Hello.java
//正确运行命令: java Hello
错误1:H:\code>java Hello.java
错误: 找不到或无法加载主类 Hello.java
原因:命令错误
错误2:H:\code>java Hello.class
错误: 找不到或无法加载主类 Hello.class
原因:命令错误
错误3:java 源文件带有包名,往往容易出错
如:H:\code\Hello2.java
package com.example;
public class Hello2
public static void main(String[]args)
System.out.println("Hello2");


这代码看上去没什么问题,执行:
H:\code>javac Hello2.java
H:\code>java Hello2
错误: 找不到或无法加载主类 Hello2
解决办法:
+.删除包名 或者
+.在code 下创建一个与包名相同的文件结构(H:\code\com\example\Hello2.java)
编译:H:\code>javac com/example/Hello2.java
运行:H:\code>java com.example.Hello2
参考技术A 回答

你好

1.首先我们先建一个java文件,写入如下图所示的代码2.接着打开CMD命令界面,用javac命令编译一下java文件3.接着用java命令执行一下编译后的内容,这个时候就报出了找不到或无法加载主类这个问题4.接下来我们将代码中的顶部package内容去掉,如下图所示5.在重新编译执行代码,这个时候就通过了,如下图所示6.最后你还可以将package包创建出来,将java文件放进去也可以

提问

没看懂,我cmd java可以运行, javac报错找不到或无法加载主类

回答

javac编译成功,但是用Java运行class文件出现“找不到或无法加载主类” 的问题吗

最容易因为大意出错的地方就是你java后面加了.class后缀原因是你java后tab键是默认给你加后缀的,所以建议最先检查下:(1)javac后文件加后缀.java例如 javac main.java(2)java后不加后缀.class 例如 Java main

在classpath的最前面要加一个本目录路径,用.表示,由于后面还有java的dt和tools两个路径,所以.后要加;进行分隔表示。例如:.;D:\\Java\\jdk1.8.0_11\\lib\\tools.jar;D:\\Java\\jdk1.8.0_11\\lib\\dt.jar 特别注意路径最前面的>>>>>.;<<<<<<即加粗部分其他也就是path和JAVA_HOME设置:JAVA_HOME:D:\\Java\\jdk1.8.0_11;Path:%JAVA_HOME%\\bin;%JAVA_HOME%\\jre\\bin;(注:设了JAVA_HOME后,CLASSPATH可以改成:对照上例:.;%JAVA_HOME%\\lib \\tools.jar;%JAVA_HOME%\\lib\\tools.jar)

在cmd下运行javac 和java的时候,必须在该java文件的目录下运行,这样生成的class也在该目录下,java的时候也会第一个就在本目录下找class文件,就不会提示找不到了。这个cmd运行路径由于一般不太注意,输入cmd就会直接到c:\\个人文件夹下,而一般的java文件会用其它软件编写,放在选定的路径下,这两个路径很少能主动重合,一运行当然找不到了,但是javac能认到,不知为什么java就提示找不到?这点有点奇怪。网上各种解决方法里很少注意到其实就是这个小问题造成的找不到类,都想当然的以为是在java源文件路径下运行java,那当然就找不到基本问题所在了。

如果1、2、3都做了还是没变化,那就是该计算机改了环境变量后需要重新启动下让新的设置生效,重启下即可。

Java 命令行运行java程序,出现“找不到或无法加载主类 ”的注意事项

引用:http://blog.chinaunix.net/uid-27106528-id-5209914.html

 

要在CMD命令行中使用java 运行java程序,关于出现 “找不到或无法加载主类 ”错误的解决办法,
   网络上基本都是在说关于"classpath"路径的配置问题,要加入 ” .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;“   
 前面加入”.;",表面要在当前目录下面寻找类。
       如果你试过了很多次,classpath也配置对了,依旧出现这个错误,注意你使用的测试代码,是否在某一个包名的下面;
举例:代码如下:   

点击(此处)折叠或打开

  1. package helloworld;
  2. public class helloworld {
  3.     public static void main(String args[])
  4.     {
  5.         int num=10;
  6.         int max=Integer.MAX_VALUE;
  7.         System.out.println("hello world!");
  8.         System.out.println("num++*num++="+ num++*num++ );
  9.         System.out.println("max integer="+ max);
  10.               
  11.     }
  12. }

      在文件所在的当前目录下,运行javac helloworld.java编译成功,生成helloworld.class文件,这个时候,你用java helloworld 想运行程序,总会出现”找不到或无法加载主类“的错误。
     这个时候要注意,之所以找不到,是因为helloworld在helloworld包名的下面。
     去掉 ”package helloworld;“ 重新用javac 编译helloworld.java,再运行java helloworld 就可以了。
     或者新建一个包名一样的文件夹,在本例中,为建立一个helloworld的文件夹,把java文件移到该目录下。
    然后在helloworld文件夹的平级下,运行javac   helloworld/helloworld.java编译程序,运行java helloworld.helloworld  则可以运行含有包名的java程序。

  原理说明:
  java 程序运行class文件,对于有包名的类,java把包名当成文件夹处理,”包名+类名“ 相当于 ”文件夹目录+类名“来寻找类。

以上是关于运行Java cmd程序 找不到或无法加载主类怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

java运行显示“找不到或无法加载主类”怎么回事?

java无法找到或加载主类是怎么回事?

在CMD下用java命令出现“找不到或无法加载主类”问题

java无法找到或加载主类

找不到或无法加载主类!

MAC 找不到或无法加载主类怎么解决