java类路径定制_设置Java类路径的注意事项

本文详细介绍了Java类路径的设置,包括如何将JAR包和非JAR包加入类路径,以及设置过程中的常见错误和注意事项。通过具体例子展示了正确与错误的类路径配置,强调了使用'*'通配符的技巧,并提醒了使用'lib/*.jar'的错误做法。
摘要由CSDN通过智能技术生成

现在有一个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

0818b9ca8b590ca3270a3433284dd417.png

一、设置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

0818b9ca8b590ca3270a3433284dd417.png

图3

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

图5

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

二、小技巧

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值