如何调在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. CentOS 6.x 下Postfix和dovecot邮件服务安装和基本配置

    1 卸载sendmail [root@mail~]# pstree | grep sendmail [root@mail~]# service sendmail stop [root@mail~]# ...

  2. 深度学习“引擎”之争:GPU加速还是专属神经网络芯片?

    深度学习“引擎”之争:GPU加速还是专属神经网络芯片? 深度学习(Deep Learning)在这两年风靡全球,大数据和高性能计算平台的推动作用功不可没,可谓深度学习的“燃料”和“引擎”,GPU则是引 ...

  3. poj 2886Who Gets the Most Candies?

    http://poj.org/problem?id=2886 #include <cstdio> #include <cstring> #include <algorit ...

  4. Java实现KMP算法

    /**  * Java实现KMP算法  *   * 思想:每当一趟匹配过程中出现字符比较不等,不需要回溯i指针,   * 而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远   * 的一段 ...

  5. 【HDOJ】1063 Exponentiation

    这道题目莫名其妙的wa,又莫名其妙的过了. import java.util.Scanner; import java.math.BigDecimal; public class Main { pub ...

  6. POJ1260 Pearls(dp,矩阵链乘法)

    题目链接. 题目大意: 给定一个n,和两个序列a[i], p[i]. a[i] 表示需要购买 i品质 的数量,p[i] i 等级的价格. 1.每个品质都会有不同的价格,价格依据品质上升而上升 2.买一 ...

  7. Python HiveServer2

    1. 安装pyhs2   pyhs2依赖项如下:   gcc-c++   python-devel.x86_64   cyrus-sasl-devel.x86_64   因此pyhs2的安装命令如下: ...

  8. 【性能测试】【Jmeter】学习(2)——录制一段脚本

    打开JMeter工具,录制一段脚本(我做的是录制登陆网站后点击设备的开关设定,然后再退出) 1).创建一个线程组(右键点击“测试计划”--->“添加”---->“线程组”) 2).添加录制 ...

  9. XBox360自制系统的更新(Update)

    升级和更新 升级(Upgrade):从Windows XP到Windows 10,这叫升级,不叫更新.XBox360升级失败的话,后果可能会比较严重,直接就无法开机了. 更新(Update):在Win ...

  10. RMQ——[USACO Jan07] 均衡队形题解

    题目:[USACO Jan07] 均衡队形 描述: 题目描述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按同样的顺序站好.一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比 ...