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

时间: 2024-10-03 10:12:58

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

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

近期在做springboot项目,发现springboot项目上有个红叉但找不到哪个类报错,ecplise没有把项目自动编译,运行还提示"错误: 找不到或无法加载主类",进入工作空间"项目\target\classes",发现项目java类根本没有编译,尝试各种方式发现均不可以,后来在网上发下这篇文章试了确实可以http://blog.csdn.net/u011526234/article/details/50394951,现在remark以下,希望也可以帮到其他遇

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

发现问题 切换到mac平台后,突然想写点程序运行在mac下,想到mac自带java,会方便好多.不过在这过程中遇到了麻烦: 总是提示 “错误: 找不到或无法加载主类” 工程结构 查了好久,终于找到原型所在,发现网上很多资料都写的都不太多,自己记录一下.先看看工程的位置和目录. 我的eclipse 工作空间位置是: /Users/zhangyunfei/workspace_java 我的工程名字叫:hellodemo 我的main class 的package name (包名)为: hellod

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

有时候我们需要直接用jdk提供的java命令来执行class文件让软件运行起来,特别是很多初学者,但经常会发现如下提示: 用eclipse或用ant则没有问题. 其实原因很简单,我们忽略了2个细节. 1.java指令默认在寻找class文件的地址是通过CLASSPATH环境变量中指定的目录中寻找的. 2.我们忽略了package的影响. 第一个问题好解决: 我们直接在CLASSPATH环境变量中加入".;"即可."."的意思是搜索当前目录 第二个问题看下面分析: 看

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

classpath配置的错误,所以找不到.class文件. 原先的etc/profile中的classpath配置 export CLASSPATH=$JAVA_HOME/lib/tools.jar 更改后的: export CLASSPATH=.:$JAVA_HOME/lib/tools.jar 加了个.:,当前目录的意思. 原文地址:https://www.cnblogs.com/wangshen31/p/9823674.html

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

javac编译成功,用java运行class文件出现"找不到或无法加载主类" 的问题所在很简单 入门就遇到这样的问题,环境变量按网上说的配好了,直接java 和 javac都有提示出来,说明没问题了, 做了一个简单java,放在e盘根目录下,在c:下操作javac该java文件成功了,但用java 该class时却提示"找不到或无法加载主类" ,忙活了半天,找了些资料,发现其实很简单,不是语句错误,是路径问题classpath的问题. 主要是以下两点要注意: 1.在

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

这边提供一个关于程序中含有package关键字,使用"终端"运行程序时出现"找不到或无法加载主类",而使用Eclipse软件可以正常运行程序的可能解决办法. 例如程序名为HelloWorldTest.java,程序中含有package helloWorld语句,而该包位于javatest目录下,即javatest/helloWorld/HelloWorldTest.java. 应该在java文件所在的目录运行javac指令,即在helloWorld目录中运行java

C#.NET验证码智能识别学习笔记---06 解决java jre问题:JTessBoxEditor.jar打开的时报找不到或无法加载主类 com.sun.tools.javac.Main错误

技术qq交流群:JavaDream:251572072 教程下载,在线交流:it.yunsit.cn 碰到了这个问题在网上搜了下, 问题描述:我的问题是在使用javac编译测试程序市,出现如下错误: 错误: 找不到或无法加载主类 com.sun.tools.javac.Main 解决办法:当出现这个错误时,百度之,结果很多人都是说的环境变量设置错误,但是检查了下环境变量,没有什么问题. 这时,看到错误信息中有javac,猜想大概是找不到javac这个文件吧,于是到jdk\bin目录下,发现没有j

Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法!

今天启动项目,又遇到找不到或无法加载主类的情况,清除项目后无法编译,class文件下没有.class文件,至少遇到3次这个问题了,隔一段时间就出现这个问题,而且每次解决的方法都还不相同,这个问题的标识就是项目上有红色差号或者叹号,原因诸多也说不清楚,有的时候是jar包缺或者引入了无用的jar包,有时候开发软件编译停顿了反应慢等等,今天特意总结解决此问题的方法,和大家分享一下: 1.在src文件夹上点右键-Build Path-Use as Source Folder,重新进行编译,一切正常了.

javac 及 java命令的使用问题(错误或无法加载主类)

一.问题 使用 javac 命令编译完.java源文件后,用 java 命令运行.class文件时,通常会遇到如下或类似的问题: 错误: 找不到或无法加载主类 HelloWorld.class 二.解决 javac命令用来编译.java源文件.没有-d选项时直接在.java源文件同级目录下生产.class文件:有加-d时会在指定路径生成.class文件且文件在与包语句对应的目录下. 当指定 -d path 选项时,会在path下生成 与.java文件里的包声明结构 相同的.class文件.如,若