- 浏览: 2052089 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (795)
- java (263)
- 聚类搜索引擎 (9)
- 经验之谈 (67)
- DSP (3)
- C++ (140)
- Linux (37)
- SNMP (6)
- Python (6)
- 数据库 (61)
- 网络 (20)
- 算法 (15)
- 设计模式 (4)
- 笔试题 (38)
- 散文 (35)
- 数据结构 (9)
- 银行知识 (0)
- 榜样 (9)
- Lucene (15)
- Heritrix (6)
- MetaSeeker (0)
- netbeans (12)
- php (3)
- 英语 (8)
- DB2 (0)
- java基础 (5)
- mongodb & hadoop (4)
- Javascript (7)
- Spring (4)
- ibatis & myibatis (1)
- velocity (1)
- 微服务 (0)
- paddle (1)
- 第三方 (0)
- 知识沉淀 (1)
- 建模 (0)
最新评论
-
0372:
标示对java很陌生!
中文乱码解决的4种方式 -
梦留心痕:
Java中\是转意字符, 可是你的这句话我没看懂,只要把得到的 ...
java中如何忽略字符串中的转义字符--转载 -
yanjianpengit:
[b][/b]
java为什么非静态内部类里面不能有静态成员 -
springdata-jpa:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
eclipse 如何把java项目转成web项目 -
qq1130127172:
,非常好。
(转)SpringMVC 基于注解的Controller @RequestMapping @RequestParam..
本文的目的是向初学者介绍什么是 classpath,以及如何在项目中组织 classpath。熟悉 classpath 是熟练使用 java/javac 命令的前提。虽然类似的文章非常多,但本文力求做到简单易读。
一、基本用法
--------------------------------------------------------------------------------
classpath 是 Java 最重要的基础概念之一。它是一个编译和运行时都要用到的参数。当没有这个参数时,java 和 javac 命令会取环境变量 CLASSPATH 来代替。如:
javac -classpath . Class1.java
那么 javac 便会以当前目录(.)作为 classpath。你也可以先将环境变量 CLASSPATH 的值设为“.”,然后执行
javac Class1.java
效果是一样的。注意,如果你指定了参数,那么环境变量就会被忽略。所以二者只会取其一。
二、classpath 的作用
--------------------------------------------------------------------------------
classpath 用来指向系统现有任何一个位置的 java 程序。这样能够提高复用性。比如程序 b 需要用到程序 a 当中的类,那么我不需要将 a 拷贝到 b 那里,只需要在运行 b 的命令中将 classpath 指向 a,那么 b 就可以顺利的引用 a 的类了。
我们知道,java 程序就是某个目录下的一堆 .class 文件,或者打好包的 .jar 文件。所以 classpath 所包含的,也就是目录或 .jar 文件的路径。如果要指向多个程序,路径之间就要用“;”隔开。下面是一个例子:
-classpath .;C:\commons-lang-2.1.jar;C:\commons-collections-3.1.jar
这个 classpath 就依次包含了一个目录和两个 jar 包。
三、组织 classpath
--------------------------------------------------------------------------------
classpath可以指向多个位置!当 classpath 很长的时候,我们可以将它们组织一下。为了运行方便,java 程序通常都会提供一个批处理文件(如 run.bat)。文件的内容类似于下面的:
set path=%CLASSPATH%;commons-lang-2.1.jar;
set path=%path%;program.jar
java -classpath %path% MainClass
那么就算 classpath 再长,也可以像第二行那样化整为零,添加删除都很方便。这比用环境变量方便的多,所以建议不要依赖于 CLASSPATH 环境变量。
像 commons-lang、commons-collections 等这些类库都是很多 java 程序要经常用到的。我们可以将它们放在一起,然后写一个批处理文件将这些文件都包含到变量中,编译或运行时将这个变量赋给 classpath 参数即可。
四、一个小例子
--------------------------------------------------------------------------------
假设我有一个类库 C:\commons-lang-2.1.jar,我在 D 盘根目录下创建一个类,内容如下:
import org.apache.commons.lang.StringUtils;
public class Class1 {
public static void main(String[] args){
System.out.println(StringUtils.isEmpty(null));
}
}
其中 StringUtils 这个类是包含在 commons-lang-2.1.jar 当中的,所以编译和运行时需要使用 classpath 来指定。
那么编译命令为:
D:\>javac -classpath C:\commons-lang-2.1.jar Class1.java
运行命令为:
D:\>java -classpath .;C:\commons-lang-2.1.jar Class1
注意两个命令的 classpath 参数稍有不同。当指定了 classpath 参数时,java 命令只会在 classpath 中寻找类。所以要执行当前目录下的类,就必须将当前目录加入 classpath。
不管哪种 Java IDE,在配置项目的时候都会有一个“依赖关系”,这就是用来在编译或运行的时候生成 classpath 参数的。
总之,classpath 这东西还是不难理解的。另外留个题目:如果 classpath 中的多个路径都包含 com.program.Class1,那么编译时和运行时会使用哪一个呢?请写程序证明一下。
发表评论
-
流式计算
2022-02-07 14:31 289private void postHandle(List& ... -
消息队列使用的四种场景介绍
2018-08-09 16:34 2482以下介绍消息队列在实际应用中常用的使用场 ... -
设计模式
2018-04-11 16:49 9891.桥梁模式,将抽象部分与实现部分隔离开,抽象部分持有实现 ... -
Spring boot web可以访问Service和Mapper层
2018-03-26 16:42 2881Spring boot的web层可以访问Service层,然 ... -
FreeMarker的基础语法使用 && 心得和技巧
2018-01-10 10:03 2077FreeMarker是一个模板引 ... -
webService----wss4j+cxf实现WS-Security(基于UsernameToken)
2017-10-23 18:58 1566分享一下wss4j+cxf基于UsernameToken的安 ... -
Spring MVC之LocaleResolver(解析用户区域)
2017-09-23 15:55 2540为了让web应用程序支持国际化,必须识别每个用户的首选区域, ... -
(转)java泛型
2016-11-12 20:29 1654http://www.cnblogs.com/lwbqqyu ... -
java中如何忽略字符串中的转义字符--转载
2016-06-28 16:42 9925原文地址:http://my ... -
(转)关于JAP FetchType.LAZY(hibernate实现)的理解 .
2016-04-27 15:22 5111JPA定义实体之间的关系有如下几种: @OneToOne ... -
(转)hibernate annotation注解方式来处理映射关系
2016-04-26 16:52 1843http://www.cnblogs.com/xiao ... -
代码片段,导出的文件头
2015-11-18 20:34 1610public static void setDownload ... -
(转)为什么要两次调用encodeURI来解决乱码问题
2015-08-03 20:19 2494地址:http://blog.csdn.net/howla ... -
杀死进程
2015-07-21 14:54 1295sudo lsof -i :9000 COMMAND P ... -
批处理batch,执行多个SQL语句
2015-07-15 19:21 10622批处理batch,执行多个SQL语句。 ... -
中文乱码解决的4种方式
2015-07-03 14:20 2633目前收集到4中方法,中文传参一documentPath为例: ... -
GET请求的中文乱码问题及处理意义
2015-07-03 13:47 6637首先看一段乱码的程序 ... -
java.ByteArrayInputStream与ByteArrayOutputStream再次理解
2015-03-16 17:59 3244第一次看到ByteArrayOutputStream的时 ... -
(转)SpringMVC 基于注解的Controller @RequestMapping @RequestParam..
2014-07-28 17:42 2381概述 继 Spring 2.0 对 Spring MVC ... -
java中序列化的serialVersionUID解释
2014-07-25 09:26 1896serialVersionUID: 字面意思上是序列化的版本号 ...
相关推荐
### Servlet简介 Servlet是一种用于扩展服务器功能的服务器端小程序,主要应用于Java环境下。Servlet可以生成动态Web页面,并处理客户端发送的请求。它们是Java Web开发中的一个重要组成部分。 ### 关键概念解析 ...
一 简介 h2 database 是一个开源免费的Java SQL数据库 数据库分为嵌入式 Embedding 和Server模式 要使用embedding mode 需要做以下事情: 1 添加h2 jar到classpath中 2 使用jdbc驱动:org h2 Driver 3 jdbc数据库...
本教程主要围绕“Java基础知识简介”展开,包括Java语言概述、课程架构、Java SE结构、常用命令操作、语言特性、JDK配置与环境变量设置以及Java注释和API的使用。 首先,Java语言概述部分会介绍Java的历史背景,它...
#### 二、Eclipse项目结构简介 在深入讨论如何配置第三方JAR包之前,我们需要先了解Eclipse项目的几个关键概念: 1. **项目路径**:指Eclipse项目所在的物理位置。 2. **源代码路径**:项目中的源代码目录,例如`...
spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.suffix=.ftl ``` 3. 创建模板:在指定的模板路径下创建`.ftl`文件,编写HTML模板。 **三、Shiro框架简介** Apache Shiro是一个...
二 h2 database 的控制台">一 简介 h2 database 是一个开源免费的Java SQL数据库 数据库分为嵌入式 Embedding 和Server模式 要使用embedding mode 需要做以下事情: 1 添加h2 jar到classpath中 2 使用jdbc驱动:org...
**JSP(Java Server Pages)简介** JSP(Java Server Pages)是一种基于Java语言的Web应用开发技术,它被广泛用于构建动态、安全且跨平台的网站。JSP结合了HTML和Java代码,使得开发者可以在网页中直接嵌入Java代码...
JAR文件简介** - **定义**: JAR(Java Archive)是一种用于打包Java类库的文件格式。 - **作用**: 方便分发和部署,支持类和资源文件的打包。 **2. 创建JAR文件步骤** - **编写MANIFEST.MF文件**: 指定主类和...
项目软件简介、下载、安装和配置对于初学者来说至关重要,特别是对于想要涉足Java软件开发的新人。本指南将详细介绍三个核心工具:JDK、MyEclipse和SVN,旨在帮助新手快速掌握这些软件的获取、安装及配置过程,从而...
1. **JDBC简介** JDBC是Java Database Connectivity的缩写,它是Java编程语言中用于访问数据库的标准API。通过JDBC,开发者可以编写跨平台的Java应用程序,这些程序能够与各种数据库系统进行交互,包括Oracle、...
#### 一、简介与背景 在进行Java开发的过程中,正确配置JDK(Java Development Kit)环境变量是至关重要的一步。它不仅确保了开发环境的正常运行,还为开发者提供了必要的工具集来编译、运行Java程序。本文将详细...
### JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,它可以为多种关系型数据库提供统一访问接口。JDBC由一组用Java语言编写的类和接口组成,使得开发人员能够通过标准的方法来连接...
包含java特性、java学习方法、网络资源汇总、jdk下载和安装、path与CLASSPATH的设置、java基本语法、关于对象的认识、数组、字符串(String类))、Ant简介、JUnit简介。 作者:林信良(网络化名良葛格) 学历:台湾大学...
同时,理解classpath的作用至关重要,classpath是一个配置项,它告诉Java运行时系统在哪里寻找类文件。正确设置classpath可以确保程序能正确加载和执行所需的类。 总的来说,Java语言以其强大的跨平台能力和面向...
### JSF环境配置及简介 #### 一、环境配置 **1. 必备工具** - **SUN公司的 JDK:** Java Development Kit 是 Java 编程的基础,提供了编译、运行 Java 程序所需的环境。 - **服务器:** 例如 Tomcat 5,用于部署...
1. **Ant简介**: - **定义**:Apache Ant是一款Java平台上的自动化构建工具,它通过XML文件来描述构建过程,简化了软件项目的编译、测试和部署工作。 - **配置**:通常情况下,Ant不需要单独的环境变量配置。...
### Java简介及开发环境搭建知识点详解 #### 一、Java简介 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems公司于1995年推出。它被设计为能够在多种平台上运行,即“一次编写,到处运行”(Write Once,...