现在有一个JAVA项目,项目结构如图1所示。类Main依赖Log4J和Mysql-Connector包,“Base.java”文件只是最简单的类定义,“Main.java”文件内容如下:

package com.dslztx.java;

import org.apache.log4j.Logger;

public class Main extends Base {

private static final Logger logger = Logger.getLogger(Main.class);

public static void main(String[] args) {

logger.info("Hello World");

// depend on mysql

System.out.println(com.mysql.jdbc.Driver.class.getCanonicalName());

}

}

图1

一、设置Java类路径的注意事项

1.1、将JAR包加入类路径

欲将JAR包加入类路径,必须将完整的JAR包路径加入类路径,对于以上项目来说,正确的编译命令和运行命令分别为:javac -classpath "./src:./lib/mysql-connector-java-5.1.17-bin.jar:./lib/log4j-1.2.13.jar" src/com/dslztx/java/Main.java和java -classpath "./src:./lib/mysql-connector-java-5.1.17-bin.jar:./lib/log4j-1.2.13.jar" com.dslztx.java.Main。

如果“-classpath”选项的值设定为“./src:./lib”,那么编译会报出如图2所示错误,运行会报出如图3所示错误。

图2

图3

1.2、将非JAR包加入类路径

欲将非JAR包(比如配置文件,单独的类文件等)加入类路径,只需将父目录加入类路径即可,加入完整的路径反而导致错误。接下来进行举例说明。

1.2.1、例子1

现在预先编译“Base.java”文件,将得到的“Base.class”文件放在“./com/dslztx/java”目录下(当前目录是“Classpath”目录),此时目录结构如图4所示。正确的编译命令为:javac -classpath ".:./lib/mysql-connector-java-5.1.17-bin.jar:./lib/log4j-1.2.13.jar" src/com/dslztx/java/Main.java。如果将编译命令改成:javac -classpath "./com/dslztx/java/Base.class:./lib/mysql-connector-java-5.1.17-bin.jar:./lib/log4j-1.2.13.jar" src/com/dslztx/java/Main.java,则会出现如图5所示错误。

图4

图5

1.2.2、例子2

使用javac -classpath "./src:./lib/mysql-connector-java-5.1.17-bin.jar:./lib/log4j-1.2.13.jar" src/com/dslztx/java/Main.java编译命令得到编译结果,根据这个结果正确的运行命令应为:java -classpath "./src:./lib:./lib/mysql-connector-java-5.1.17-bin.jar:./lib/log4j-1.2.13.jar" com.dslztx.java.Main,Log4J正常运行需要加载类路径下的“log4j.properties”文件,因此在运行命令的类路径中加了“./lib”。如果将运行命令改成java -classpath "./src:./lib/log4j.properties:./lib/mysql-connector-java-5.1.17-bin.jar:./lib/log4j-1.2.13.jar" com.dslztx.java.Main,则会出现如图6所示结果(并不算错误)。

图6

二、小技巧

可以通过“*”通配符将一个目录下的所有JAR包加入类路径,比如要将“lib”目录下的所有JAR包加入类路径,可以通过“lib/*”的形式。千万注意,绝对不能使用“lib/*.jar”的形式,后者是错误的。另外需要注意的是“lib/*”表示的是将“lib”目录下的所有JAR包加入类路径,并没有将“lib”目录下的非JAR包加入类路径。[1]

java类路径定制_设置Java类路径的注意事项相关推荐

  1. java ee开发环境_设置Java EE 6开发环境

    java ee开发环境 本教程简要说明了如何设置典型的环境来开发基于Java EE 6的应用程序. 除了可以正常工作的Windows XP客户端具有足够的CPU能力和内存外,本教程没有其他先决条件. ...

  2. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  3. C#类与对象_创建玩家类

    C#:类与对象_创建玩家类,实现字段,方法,引用和简单游戏逻辑 //创建CF当中的玩家类Player,该类含有字段:名字,性别, 血量,武器. //武器背包当中匕首,步枪,机枪,狙击枪. 玩家类具有以 ...

  4. java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载

    不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...

  5. java常用的分隔符_*文件操作类1(基本操作)分隔符的使用

    Java IO学习原则:抽象类中定义的抽象方法会根据实例化其子类的不同,也会完成不同的功能. 使用File类来进行文件的操作. 如果要进行所有的文件以及文件内容的开发操作,那么应该使用java.io包 ...

  6. java中把路径定义到src下的_设置java路径路径

    JDK环境变量配置 java设置classpath,path,java_home环境变量 Windows7安装JDK的环境变量设置Windows7 X64安装"jdk-6u26-window ...

  7. java有理数类的封装_【Java 教程(原创)】025.参数传值——有理数的类封装

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 零度非安全 于 2017-4-7 11:09 编辑 点击图片穿越到 索引帖,听说有惊喜! ...

  8. 用java有理数类包含加减乘除_用java具体代码实现分数(即有理数)四则运算

    用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...

  9. java有理数类的封装_【Java笔记】有理数的类封装

    分数是有理数(Rational),我们经常做分数的四则运算得到的是小数,如果我们运行分数的四则运算想要得到分数,要怎样做呢? 用类实现对有理数的封装可以做到. 有理数有两个重要的成员,即分子(nume ...

  10. java 线程组作用_浅析Java中线程组(ThreadGroup类)

    一.概念 Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线 ...

最新文章

  1. python虚拟环境
  2. cv2.putText
  3. Yii rabc角色权限管理文章推荐
  4. ubuntu11.04下配置中文输入法
  5. TSQLDBServerHttpApi使用工作线程池
  6. javac手动编译servlet
  7. React开发(235):document.body.clientHeight
  8. 一文了解阿里云CDN HTTP2.0
  9. jsp中el表达式创建一个list
  10. 浅谈.net事件机制
  11. 机器学习算法基础4-K-近邻算法、朴素贝叶斯算法、分类模型评估、模型的选择与调优
  12. kux格式 linux,怎么把1080P的kux视频转换成mp4呢
  13. Cocos游戏开发——004cc.Node坐标空间
  14. j2ee期末考试总结
  15. 高等几何——变换群与几何学8
  16. 苹果ppt_毫无惊喜的苹果新品发布会,用到的这4个PPT技巧却值得学习
  17. C++ pair的比较大小
  18. Android开发实战《智慧北京》——7.项目拓展
  19. 全球科大校友chatGPT论坛
  20. 双重检查锁(Double-Checked Locking)的缺陷

热门文章

  1. oracle数据数形转换db2,DB2数字类型转换成字符串类型,例:ORACLE与DB2
  2. 计算机应用基础实训教程视频,计算机应用基础与实训教程第7章.ppt
  3. c++ hashset的用法_C++ set crbegin() 使用方法及示例
  4. python怎样编写定时程序_如何用Python写一个每分每时每天的定时程序
  5. JAVA里的jsp网页背景_Java-带CSS的JSP不显示背景图像
  6. nyoj 605 Dice Tower
  7. 电脑常用音频剪辑软件_常用手机视频剪辑软件
  8. hdoj1160:FatMouse's Speed(dp+最长递减子序列思想+数组巧妙记录输出)
  9. 联想微型计算机改win76,装不了Win7?采用第六代酷睿处理器的电脑改装Win7的方法...
  10. 计算机组装与维护精品,国家精品课程——《计算机组装与维护》.pdf