如何调在CLI中使用java tool(JDK中的java命令)调用一个打包在jar中的类,我想大多数人都能给出笼统的方案:

java -classpath xxxxx com.test.classA

这个答案只能说太笼统,再追问一句,如果这个类还依赖若干jar包,并且这些jar包,包括classA所在的jar包都放在路径/root/lib/ 下,classpath内容应该是什么?

我给我的答案是 -classpath=/root/lib, 这个答案是错误的。

这个错误令我不解,我记忆中classpath只需要指定到文件夹路径就OK了,这是为什么呢?

速查oracle官方文档,好吧,确实纠正了我一直以来的错误观念:

Class paths to the .jar, .zip or .class files. Each classpath should end with a filename or directory depending on what you are setting the class path to:

  • For a .jar or .zip file that contains .class files, the class path ends with the name of the .zip or .jar file.
  • For .class files in an unnamed package, the class path ends with the directory that contains the .class files.
  • For .class files in a named package, the class path ends with the directory that contains the "root" package (the first package in the full package name)

这是官方文档的说明,什么意思呢:

是说classpath 一般是文件路径或者是文件夹路径,到底是什么跟你classpath的指向有关系:

1. 对于.jar, .zip(.class也可以打zip包,第一次听说) 包来说,classpath应该是指到这些文件上,也就是说classpath是文件路径。

2. 对于没有包路径的class文件来说,classpath指定到该.class文件的父目录就可以了

3. 对有包路径的class文件来说,classpath要指定到包路径最上层(root)的父目录,也就是说有个.,class所在路径是/root/lib/classes/com/test/classA.class其中包路径是com.test.classA, 那么classpath应该是/root/lib/classes才对。

这端描述完整的解释了我之前的错误,对于最初提出的那个问题,正确的应该是classpath=/root/lib/xxx.jar ; xxx.jar; xxx.jar ...

这个问题说明了我没有对JAVA比较底层的知识了解透彻,过于依赖IDE,希望能克服这个毛病。

写的很乱,以备后查。

JAVA classpath, 纠正我一直以来错误的认知的更多相关文章

  1. java classpath import package 机制 @Java的ClassPath, Package和Jar

    java classpath import package 机制   從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package ...

  2. java classpath getResource getResourceAsStream

    1.classpath 用于指定java运行时,jvm寻找class文件以及jar文件的存储目录.jvm依据classpath中出现的jar文件以及目录,依次寻找,直到找到指定class文件. 例:j ...

  3. java classpath批量设置shell脚本

    java classpath批量设置shell脚本   注意:linux bash jar文件之间的分隔符是':'    export JAR_HOME=path to directory which ...

  4. 【微信Java开发 --番外篇】错误解析

    虽然在微信开发过程中,会有微信公众平台开发者文档中的<全局返回码>作为错误的参考对比:但是依旧的,会觉得有时候的问题莫名其妙.[注:本人使用weixin-java-tools进行开发] 下 ...

  5. java classpath深入详解(转)

    http://developer.51cto.com/art/200509/2786.htm 设置类路径 结构 可通过对 JDK 工具使用 -classpath 选项(首选方法)或设置 CLASSPA ...

  6. java的Socket通信例子及关于java.net.SocketException: Socket is closed错误

    今天写socket数据相互通信的时候,碰到一个及其蛋疼的错误.单向传输数据的时候server与client是没有问题的,但是两个都有输入输出操作的时候就出现了这个问题 java.net.SocketE ...

  7. 十个JAVA程序员容易犯的错误

    十个JAVA程序员容易犯的错误 1. Array 转 ArrayList 一般开发者喜欢用: List<String> list = Arrays.asList(arr); Arrays. ...

  8. JAVA classpath jar问题[zz]

    classpath问题可以说是所有初学者头疼的问题,偶也一样. 1) classpath的作用:  它的作用就事让java找到你所要执行,或你拥有的类. 2) classpath的设置:  设置cla ...

  9. Java 执行jar文件出现版本错误信息

    Java 执行jar文件出现版本错误信息 一.问题 执行jar文件出现如下错误信息: 二.解决方案 是因为在创建工程的时候选择的jdk编译版本,和执行jar环境的jdk版本不一致: 更改工程的jdk版 ...

随机推荐

  1. 构建高可用web站点学习(一)

    单个服务器如何处理请求 web服务器最简单的形式就是一个程序,它侦听HTTP请求,在收到一个HTTP请求之后做出回复.当然在接收请求后服务器所做的东西是我们关注的焦点.在下文中也会提及到node是如何 ...

  2. [转载] $\mathrm{Jordan}$标准型的介绍

    本文转载自陈洪葛的博客$,$ 而实际上来自xida博客朝花夕拾$,$ 可惜该博客已经失效 $\mathrm{Jordan}$ 标准形定理是线性代数中的基本定理$,$ 专门为它写一篇长文好像有点多余$: ...

  3. 把图片生成Base64字符串

    public class ImgeUtils { public static String img2String(BufferedImage img,String type){ String imgS ...

  4. POJ-1200(哈希)

    2015-08-19 题意:给出两个数n,nc,并给出一个由nc种字符组成的字符串.求这个字符串中长度为n的子串有多少种. 分析: 1.这个题不用匹配,因为不高效. 2.将长度为n的子串看作n位的nc ...

  5. UVA127- "Accordian" Patience(模拟链表)

    "Accordian" Patience You are to simulate the playing of games of ``Accordian'' patience, t ...

  6. POJ2533 Longest ordered subsequence

    Longest Ordered Subsequence Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 41984   Acc ...

  7. Objective-C中变量采用@property的各个属性值的含义

    我们在OC中定义变量,可以自己来定义变量的setter方法来设置变量值,用getter方法来获取变量值.但是当变量数量增多时,还采用手动添加setter/getter方法来操作变量,就会使得程序代码量 ...

  8. 在网页中在线浏览ppt文档

    方法一: 把ppt文件的扩展名直接修改为pps,嵌入到网页中 缺点:这种方式浏览器会提示是打开,还是下载,选择打开的话会直接在浏览器中打开,并且客户端一定要安装Office PowerPoint才能打 ...

  9. max key length is 1000 bytes

    ALTER TABLE ad_keyword_brand ADD CONSTRAINT w1 UNIQUE (keyword,adasin,brand,page_position,country,ad ...

  10. 苹果iOS操作系统整体架构层次讲解

     iOS的系统架构分为四个层次:核心操作系统层(Core OS layer).核心服务层(Core Services layer).媒体层(Media layer)和可触摸层(Cocoa Touch ...