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

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


测试目录结构

test

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

 A.java 代码如下:

 import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; public class A { public static void main(String[] args) throws Exception {
/**
* toHanyuPinyinStringArray方法接收的是字符类型char,返回的是字符串数组String[]
*/
for(int i=0; i<args[0].length(); i++) { String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(args[0].charAt(i)); for (int j=0; j<pinyinArray.length; j++) { System.out.println(pinyinArray[j]);
}
}
}
}

 开始编译

成功运行

  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<标志>                                          直接将 <标志> 传递给运行时系统

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

  1. 【Java_基础】cmd下使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析

    1.问题如下 当在命令行使用java命令执行字节码文件时提示“错误:找不到或无法加载主类” 2. 问题分析 这是由于在运行时类的全名应该是包名+类名,例如在包net.xsoftlab.baike下的类 ...

  2. springboot项目上有个红叉,且ecplise没有自动编译项目,运行提示“错误: 找不到或无法加载主类”

    近期在做springboot项目,发现springboot项目上有个红叉但找不到哪个类报错,ecplise没有把项目自动编译,运行还提示“错误: 找不到或无法加载主类”,进入工作空间“项目\targe ...

  3. mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法

    发现问题 切换到mac平台后,突然想写点程序运行在mac下,想到mac自带java,会方便好多.不过在这过程中遇到了麻烦: 总是提示 “错误: 找不到或无法加载主类” 工程结构 查了好久,终于找到原型 ...

  4. java编译通过,运行却提示找不到或无法加载主类

    问题: HelloWorld.java 1 package myP101; 2 3 public class HelloWorld { 4 public static void main(String ...

  5. 使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析

    有时候我们需要直接用jdk提供的java命令来执行class文件让软件运行起来,特别是很多初学者,但经常会发现如下提示: 用eclipse或用ant则没有问题. 其实原因很简单,我们忽略了2个细节. ...

  6. Linux下Java运行.class文件,报错找不到或无法加载主类

    classpath配置的错误,所以找不到.class文件. 原先的etc/profile中的classpath配置 export CLASSPATH=$JAVA_HOME/lib/tools.jar ...

  7. 记一次使用cmd执行java文件遇到的坑...包括“使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题”

    今天写了一个java文件,类似聊天软件的东西.在eclipse里输入输出显得没感觉,于是乎就准备在cmd里输入和显示输出.如下图,我准备运行的是ChatDemo.class文件.路径是:D:\work ...

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

    1.pack后为包名,包与系统文件夹一一对应.并且代码中的包名不包含文件包的名字,即文件名 2.javac 按照*.java 文件的所在路径进行编译,编译完成后,使用java +完整包名(包含文件包名 ...

  9. 编译和运行java文件 找不到或无法加载主类

    这边提供一个关于程序中含有package关键字,使用“终端”运行程序时出现“找不到或无法加载主类”,而使用Eclipse软件可以正常运行程序的可能解决办法. 例如程序名为HelloWorldTest. ...

随机推荐

  1. MYSQL错误:You can't specify target table for update in FROM clause

    这句话意思是:不能先select再更新(修改)同一个表. 可以再外嵌套多一层,这个问题只有mysql有,mssql和oracle都没有. # 出错delete from Person where Id ...

  2. java程序员从ThinkPad到Mac的使用习惯改变

    https://blog.csdn.net/yczz/article/details/49993417

  3. 使用springmvc从页面中获取数据,然后根据获得的参数信息进行修改,如果修改的数据中含有不是基本数据类型的参数。比如传的参数中有Date类型的数据时,需要我们进行参数类型转换。

    1.1 需求 在商品修改页面可以修改商品的生产日期,并且根据业务需求自定义日期格式. 1.2 需求分析 由于日期数据有很多格式,所以springmvc没办法把字符串转换成日期类型.所以需要自定义参数绑 ...

  4. DB2锁机制

    相比较Oracle来说,DB2的锁机制麻烦了很多,而且这个麻烦带来的不是性能的上升而是下降,不过如果细致了解的话,只能感慨不愧是数据库理论诞生的公司,在实现数据库理论上比Oracle全面得多.    ...

  5. 建表Table

    Sstudent表   学  号    Sno  姓  名   Sname   性  别    Ssex     年  龄      Sage   所 在 系    Sdept   200215121 ...

  6. 【c3p0】 C3P0的三种配置方式以及基本配置项详解

    数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. ---------------------------------------- ...

  7. 643. Maximum Average Subarray I

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  8. 2018.09.30 bzoj2741: 【FOTILE模拟赛】L(分块+可持久化01trie)

    传送门 数据结构经典题. 首先考虑另外一种询问方式. 已知权值val,在区间[1,n][1,n][1,n]中找一个数使得valvalval^a[i]a[i]a[i]最大. 这个可以直接01trie. ...

  9. 2018.09.01 poj2689 Prime Distance(埃式筛法)

    传送门 一道挺有趣的. 第一眼以为每个数都用miller_rabin判一次,但感觉会被卡时间啊. 继续分析发现可以晒出sqrt(r)中的所有素数,然后用类似埃式筛法的方法晒出[l,r]" r ...

  10. 实现字符串函数,strlen(),strcpy(),strcmp(),strcat()

    实现字符串函数,strlen(),strcpy(),strcmp(),strcat() #include<stdio.h> #include<stdlib.h> int my_ ...