首先我们经常在用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;去掉 变成默认包这样就可能解决上面的问题