「java-cp」javacp命令详解
本篇文章给大家谈谈java-cp,以及javacp命令详解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、错误: 找不到或无法加载主类 ArrayListMagnet?
- 2、java-cp是什么意思?为什么要跟目录?
- 3、请问 java -cp ".\\bin;.\\libs\\*;" org.testng.TestNG .\\testng.xml 这是什么意思?
错误: 找不到或无法加载主类 ArrayListMagnet?
解决 :提示错误“找不到或者无法加载主类” 的一个方法
1、可能是你的项目的Java Build Path中的Libraries中有个jar包的Source attachment指为了一个不可用的jar包。
2、jdk1.8不需要配置环境变量classpath
3、以下原理理解了你就可以自行解决上述错误。
(1)cmd运行java文件,请把文件里的第一行"package A;"注释掉;
假设:Hello.java位于C:/work/ppp/A下
在工作目录"C:/work/ppp/A" 下输入:
javac Hello.java
java Hello
则 编译运行成功。
(2)若在java文件中加上了package A;则在工作目录"C:/work/ppp/A"下输入:
javac Hello.java
java -cp .;(此处为文件路径) A.Hello
解释:-cp 为一个选项,也可写为-classpath
.表示当前目录"C:/work/ppp/A"
;表示分隔符
(此处为文件路径) 在本例中为"C:/work/ppp"
A.Hello:因为java文件里第一行有"package A",所以此处必须为A.Hello
显然,在当前目录"C:/work/ppp/A"中找不到A.Hello,在"C:/work/ppp"中找到了A.Hello,所以上述两行将编译执行成功。
java-cp是什么意思?为什么要跟目录?
cp 是 classpath的缩写,后面放的是依赖的jar包,jar目录,class的根路径之类。
请问 java -cp ".\\bin;.\\libs\\*;" org.testng.TestNG .\\testng.xml 这是什么意思?
------先解释整体命令的意思,拆成三部分解释:
首先 cp 是设置classpath(如果不知道这是啥 把他暂时理解为java搜索类文件的路径就行)的缩写方式,是java的参数;
后面的org.testng.TestNG是包含main方法类的全名,同样是java参数
最后的.\\testng.xml是程序参数,或者说是main方法里的参数
--------之后解释\与\\的问题
\是windows系统代表文件路径级别的方式,点(.)则代表着当前目录,.\bin表示的是当前目录下的bin文件夹;libs同样如此;
让后就是这个双杠了,在编程的字符串中,\代表着转义字符,例如\n,\t分别对应于换行和TAB,而在字符串里表示windows路径时,我们本意需要的就是\本身,故而使用\\,做为\的转义字符;
上述情况是在编码中的字符串常量里表达的,这里我大胆的猜一下,可能写这个命令的人理解错了一些东西,作为参数,\是不需要转义的;而操作系统有这样一个默认,即输入多个杠表示的是同一级路径,比如C:\与C:\\\\\\\\都可以代表C盘根目录,所以即使写了多个杠也一样能正常使用。
------------最后说引号
这个是命令的问题,一般来讲,执行命令时会把空格后的东西当成参数,但有时,参数本身就带有空格,比如“C:\Program Files”这个路径,用引号引起来,是为了告诉命令的执行者C:\Program Files是一个不可分割的整体,不要把Files单独的当成参数了。
一般而言,出现此类情况都是文件夹名称的问题,所以在打命令时,习惯了将表达路径的参数用引号引起来,使程序不会因为路径中带有空格而出问题。
------------其它的一些建议
1.classpath是个比较重要的概念,需要好好了解一下。
2.编码里最好少用\\,这是windows的表达方式,当你需要java的跨平台特性时,可能会遇到麻烦(比如linux就不认);你可以使用/来表示路径结构,例如/C:/windows/
关于java-cp和javacp命令详解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。