cmd命令行执行java程序的编译和执行的方法及可能出现找不到或无法加载主类的错误的解决

时间:2023-02-26 19:27:50


首先我们经常在用cmd命令行编译和执行java程序时,我们的java程序调用了第三方的jar包,那么编译和执行的方法有两种:

方法1:


编译:javac -Djava.ext.dirs=E:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1 Test.java  
运行:java -Djava.ext.dirsE:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1 Test
E:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1
是指存放第三方jar文件的目录。也可以写成相对路径:此处根据自己的去写Test.java指包含main函数的类。


方法2:

编译: javac -cp E:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1\commons-cli-1.1.jar; test.java

运行:java -cp E:\Eclipse\org.apache.commons\org.apache.commons\commons-cli-1.1\commons-cli-1.1.jar; test


有可能会出现:找不到或无法加载主类的错误!


通常出现这种问题有以下三种原因:
第一:环境变量配置不正确,配置环境变量时一定要将CLASSPATH配上,(配置教程) 


第二:执行方法有误,进入java文件目录下,首先执行javac xxx.java,生成一个xxx.class文件,然后执行java xxx 


第三:程序有问题,比如我之前直接在cmd下执行eclipse下的java文件,始终报“错误: 找不到或无法加载主类”这个异常,但是在eclipse下执行同一个文件却没有问题,后来仔细发现原来是java文件中的包名导致的,删除掉红色框中的内容即可正常运行。这是在编译通过的情况下执行编译后的文件出现的问题,如果编译都没通过那就是java文件的问题,仔细检查一下文件是否有异常,比如类没有被public修饰,或者main方法没有static修饰等等。


还有个最重要的也可能是最主要的问题,就是你的main函数不要放在包里 将包去掉 这样才能解决这个问题 我之前在这个问题上浪费了很多时间 比如:

注意事项:如果是从eclipse中已有文件运行时:需要删除 package 包名;  否则运行HelloWorld.class文件时会出现找不到或无法加载主类HelloWorld!

例如   package  hah;

  public class  HelloWorld
  { 

    public void main(String[] args) {

        System.out.println("Hello,world!");    
    }
  }

需要将第一行的package hah;去掉 变成默认包这样就可能解决上面的问题