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 代码如下:

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]);
}
}
}
}
开始编译

成功运行

- javac -cp 指明了.java文件里import的类的位置
 - 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解决无法加载主类问题的更多相关文章
- 【Java_基础】cmd下使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析
		
1.问题如下 当在命令行使用java命令执行字节码文件时提示“错误:找不到或无法加载主类” 2. 问题分析 这是由于在运行时类的全名应该是包名+类名,例如在包net.xsoftlab.baike下的类 ...
 - springboot项目上有个红叉,且ecplise没有自动编译项目,运行提示“错误: 找不到或无法加载主类”
		
近期在做springboot项目,发现springboot项目上有个红叉但找不到哪个类报错,ecplise没有把项目自动编译,运行还提示“错误: 找不到或无法加载主类”,进入工作空间“项目\targe ...
 - mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法
		
发现问题 切换到mac平台后,突然想写点程序运行在mac下,想到mac自带java,会方便好多.不过在这过程中遇到了麻烦: 总是提示 “错误: 找不到或无法加载主类” 工程结构 查了好久,终于找到原型 ...
 - java编译通过,运行却提示找不到或无法加载主类
		
问题: HelloWorld.java 1 package myP101; 2 3 public class HelloWorld { 4 public static void main(String ...
 - 使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析
		
有时候我们需要直接用jdk提供的java命令来执行class文件让软件运行起来,特别是很多初学者,但经常会发现如下提示: 用eclipse或用ant则没有问题. 其实原因很简单,我们忽略了2个细节. ...
 - Linux下Java运行.class文件,报错找不到或无法加载主类
		
classpath配置的错误,所以找不到.class文件. 原先的etc/profile中的classpath配置 export CLASSPATH=$JAVA_HOME/lib/tools.jar ...
 - 记一次使用cmd执行java文件遇到的坑...包括“使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题”
		
今天写了一个java文件,类似聊天软件的东西.在eclipse里输入输出显得没感觉,于是乎就准备在cmd里输入和显示输出.如下图,我准备运行的是ChatDemo.class文件.路径是:D:\work ...
 - javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题
		
1.pack后为包名,包与系统文件夹一一对应.并且代码中的包名不包含文件包的名字,即文件名 2.javac 按照*.java 文件的所在路径进行编译,编译完成后,使用java +完整包名(包含文件包名 ...
 - 编译和运行java文件  找不到或无法加载主类
		
这边提供一个关于程序中含有package关键字,使用“终端”运行程序时出现“找不到或无法加载主类”,而使用Eclipse软件可以正常运行程序的可能解决办法. 例如程序名为HelloWorldTest. ...
 
随机推荐
- php Pthread 多线程 (一) 基本介绍
			
我们可以通过安装Pthread扩展来让PHP支持多线程. 线程,有时称为轻量级进程,是程序执行的最小单元.线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它与同属 ...
 - Centos7下安装apache2.4 php5.6 pdo_oci oci8
			
一.下载必须的安装源码包 http://httpd.apache.org/download.cgi#apache24 httpd-2.4.23.tar.gz http://apr.apache.org ...
 - 启动apache时,出现httpd: Could not reliably determine the server\'s fully qualified domain name, using 127.0.0.1 for ServerName
			
1.通过vi打开apache的配置文件httpd.conf > vi /data/apache/conf/httpd.conf 2.找到#ServerName www.example.com:8 ...
 - 超星网站cc++
			
a系统 苏龙杰 a系统 苏龙杰 目录 1 C/C ++程序设计 1.1 前 言 1.2 第一部分 基 础 篇 1.2.1 第1章 初识C 1.2.1.1 1.1 C语言的诞生与发展 1 ...
 - Spring官方文档翻译(1~6章)
			
Spring官方文档翻译(1~6章) 转载至 http://blog.csdn.net/tangtong1/article/details/51326887 Spring官方文档.参考中文文档 一.S ...
 - 【JAVA】通过HttpURLConnection 上传和下载文件(二)
			
HttpURLConnection文件上传 HttpURLConnection采用模拟浏览器上传的数据格式,上传给服务器 上传代码如下: package com.util; import java.i ...
 - 2018.09.16 bzoj1176: [Balkan2007]Mokia(cdq分治)
			
传送门 调了半天发现是输出优化打错了求心理阴影体积233 这题很简单啊. 一个修改操作x如果对一个询问操作y有贡献那么有. tx<ty,Xx<=Xy,Yx<=Yy" rol ...
 - 带你快速进入.net core的世界(转)
			
出处:http://www.cnblogs.com/zhaopei/p/netcore.html 阅读目录 vmware虚拟机安装 CentOS7.3安装 Windows的客户端软件 .NET Cor ...
 - [转]Go与C语言的互操作
			
Go有强烈的C背景,除了语法具有继承性外,其设计者以及其设计目标都与C语言有着千丝万缕的联系.在Go与C语言互操作(Interoperability)方面,Go更是提供了强大的支持.尤其是在Go中使用 ...
 - ViewFlipper实现自动播放的图片库
			
作者实现的基础上,加上了文字的变换 public class MainActivity extends Activity { private ViewFlipper viewFlipper; priv ...