javac编译单文件、多文件引入jar包、-cp解决无法加载主类问题

 引言:很多人用ide集成开发环境用的多了,对dos命令编译多个java文件或引入jar包都变得陌生了,java不同于其他解释语言,如ruby、php 都有require,直接引入即可运行代码,但java需要先编译成字节码,所以运行的时候需要在cmd里面加些参数

1. 引入外部jar包编译运行


测试目录结构 

test

  • -- src/A.java 
  • -- lib/pinyin4j-2.5.0.jar 

 A.java 代码如下:

 1 import net.sourceforge.pinyin4j.PinyinHelper;
 2 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
 3 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
 4 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
 5 import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
 6 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 7 
 8 public class A {
 9 
10     public static void main(String[] args) throws Exception {
11         /**
12          * toHanyuPinyinStringArray方法接收的是字符类型char,返回的是字符串数组String[]
13          */
14         for(int i=0; i<args[0].length(); i++) {
15 
16             String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(args[0].charAt(i));
17 
18             for (int j=0; j<pinyinArray.length; j++) {
19 
20                  System.out.println(pinyinArray[j]);
21             }
23         }
25     }
26 }

 开始编译

成功运行

  1.    javac -cp 指明了.java文件里import的类的位置
  2.    java -cp 指明了执行这个class文件所需要的所有类的包路径-即系统类加载器的路径(涉及到类加载机制)

注意:路径在linux中用:隔开  在windows中用;隔开,对于.class文件来说,只需要指明包的路径即可;但是对于jar文件来说,必须要指定全路径即路径+文件名的格式,不能只指定一个路径

pinyin4j-2.5.0下载

 https://files.cnblogs.com/files/bc8web/pinyin4j-2.5.0%E8%A7%A3%E5%8E%8B%E4%BD%BF%E7%94%A8.rar

2.  编译多文件


 一次性编译所有.java文件

  •  一次性编译所有.java文件

  • 编译指定的多个java文件

附javac 用法

用法:javac <选项> <源文件>

其中,可能的选项包括:
-g                                                       生成所有调试信息
-g:none                                              不生成任何调试信息
-g:{lines,vars,source}                         只生成某些调试信息
-nowarn                                            不生成任何警告
-verbose                                           输出有关编译器正在执行的操作的消息
-deprecation                                    输出使用已过时的 API 的源位置
-classpath <路径>                             指定查找用户类文件的位置
-cp <路径>                                       指定查找用户类文件的位置
-sourcepath <路径>                       指定查找输入源文件的位置
-bootclasspath <路径>                  覆盖引导类文件的位置
-extdirs <目录>                               覆盖安装的扩展目录的位置
-endorseddirs <目录>                   覆盖签名的标准路径的位置
-d <目录>                                        指定存放生成的类文件的位置
-encoding <编码>                          指定源文件使用的字符编码
-source <版本>                              提供与指定版本的源兼容性
-target <版本>                                 生成特定 VM 版本的类文件
-version                                            版本信息
-help                                                 输出标准选项的提要
-X                                                      输出非标准选项的提要
-J<标志>                                          直接将 <标志> 传递给运行时系统

原文地址:https://www.cnblogs.com/bc8web/p/javac.html