- 浏览: 588627 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (214)
- web (36)
- oracle (10)
- http (1)
- 设计 (2)
- 项目 (1)
- 方法论 (0)
- 需求 (0)
- 成长 (6)
- 工作日志 (0)
- java基础 (20)
- java线程 (2)
- CMMI (0)
- Ext (19)
- JavaScript (16)
- OpenGL (0)
- 我的管理 (3)
- 敏捷 (0)
- mysql (7)
- 其他 (3)
- tools (10)
- 3d (1)
- 音视频直播 (9)
- C++ (1)
- 测试 (3)
- 开源 (3)
- css (4)
- 安全 (1)
- 项目管理 (1)
- NoSql (1)
- 文件系统 (1)
- cache (2)
- easyui (1)
- 3G (1)
- 单点登录 (1)
- portal (2)
- 问题 (0)
- ORM (0)
- 视频教程 (1)
- 电子书 (1)
- 规范 (2)
- spring (5)
- xml (0)
- ibatis (1)
- struts (2)
- 面试 (6)
- svn (0)
- 自考 (1)
- tomcat (3)
- html (1)
- jmesa Grid 组件 (1)
- 日志 (0)
- Jquery (1)
- os (1)
- books (0)
- download (0)
最新评论
-
remoteJavaSky:
弱弱的问一下,关于那个登录,登录后服务端会给客户端一个sess ...
Java Session 是如何实现的 -
jiangshuiy:
2中的报错是因为的源码有 package,而你的命令里面没有p ...
javac、java命令的使用 -
yanwushu:
简介明了,好文章......
ServletContext -
516456267:
第四个说明很有用
对log4j的ConversionPattern的学习 -
meShare2011:
加载顺序是先加载Tomcat Lib文件夹下的Jar包对么? ...
(转)jar not loaded. See Servlet Spec 2.3, section 9.7.2. 错误原因和解决办法
如有侵权请告知
javac -classpath的使用:
javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数,通过使用以下三种类型的方法 来指导编译器在编译的时候去指定的路径下查找引用类。
(1).绝对路径:javac -classpath c:\junit3.8.1\junit.jar Xxx.java
(2).相对路径:javac -classpath ..\junit3.8.1\Junit.javr Xxx.java
(3).系统变量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系统变量CLASSPATH的值进行查找,这里假设Junit.jar的路径就包含在CLASSPATH系统变量中)
javac 绝对路径的使用:
javac:假设你要编译的类文件名叫:HelloWorld.java,其完全路径为:D:\java\HelloWorld.java。但你所在的当前目录是:C:\Documents and Settings\peng>。如果想在这里执行编译,会有什么结果呢?
(1).C:\Documents and Settings\peng> javac HelloWorld.java 这时编译器会给出如下的错误提示信息:
error: cannot read: HelloWorld.java
这是因为默认情况下javac是在当前目录下查找类文件,很明显这个路径不是我们存放类文件的地方,所以就会报错了
(2).C:\Documents and Settings\peng>javac D:\java\HelloWorld.java
这时编译成功。
所以,只要你执行javac命令的目录不是类文件存放的目录,你就必须在javac命令中显式地指定类文件的路径。
java -classpath的使用:
java:假设我们的CLASSPATH设置为:D:\peng\java\pro ,在该目录下有三个文件:HelloWorld.java / HelloWorldExtendsTestCase / HelloWorldExtendsHelloWorld。这三个文件的类声明分别如下:
HelloWorld.java :public class HelloWorld
HelloWorldExtendsHelloWorld.java :public class HelloWorldExtendsHelloWorld extends HelloWorld
HelloWorldExtendsTestCase.java:public class HelloWorldExtendsTestCase extends junit.framework.TestCase
假设我们已经按照上面关于javac -classpath和javac 绝对路径的使用,顺利地完成了三个文件地编译。现在我们在C:\Documents and Settings\peng>目录下执行这三个.class文件
(1).C:\Documents and Settings\peng>java HelloWorld
Hello World
可以看到执行成功。为什么我们在 C:\Documents and Settings\peng>执行命令,JVM能够找到D:\peng\java\pro\HelloWorld.class文件呢?这是因为我们配置了系统变量CLASSPATH,并且指向了目录:D:\peng\java\pro 。所以JVM会默认去该目录下加载类文件,而不需要指定.class文件的绝对路径了。
(2).C:\Documents and Settings\peng>java HelloWorldExtendsHelloWorld
Hello World
可以看到执行成功了。HelloWorldExtendsHelloWorld继承了HelloWorld类,所以在执行时JVM会先查找在CLASSPATH下是否存在一个HelloWorld.class文件,因为我们已经成功编译了HelloWorld 类了,所以可以成功执行HelloWorldExtendsHelloWorld.class
(3).C:\Documents and Settings\peng>java HelloWorldExtendsTestCase
Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/TestCase
可以看到程序抛出异常了,提示找不到junit.framework.TestCase文件。为什么同样在:\peng\java\pro 下,HelloWorldExtendsHelloWorld.class就可以成功执行,而这个就不行了呢?这是因为: junit.framework.TestCase.class文件并不存在于当前目录下,所以为了能够让程序成功运行,我们必须通过指定CLASSPATH的方式,让JVM可以找到junit.framework.TestCase这个类,如(4):
(4). C:\Documents and Settings\peng>java -classpath %CLASSPATH% HelloWorldExtendsTestCase
Hello World
总结:
(1).何时需要使用-classpath:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类
(2).何时需要指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)
javac -classpath的使用:
javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数,通过使用以下三种类型的方法 来指导编译器在编译的时候去指定的路径下查找引用类。
(1).绝对路径:javac -classpath c:\junit3.8.1\junit.jar Xxx.java
(2).相对路径:javac -classpath ..\junit3.8.1\Junit.javr Xxx.java
(3).系统变量:javac -classpath %CLASSPATH% Xxx.java (注意:%CLASSPATH%表示使用系统变量CLASSPATH的值进行查找,这里假设Junit.jar的路径就包含在CLASSPATH系统变量中)
javac 绝对路径的使用:
javac:假设你要编译的类文件名叫:HelloWorld.java,其完全路径为:D:\java\HelloWorld.java。但你所在的当前目录是:C:\Documents and Settings\peng>。如果想在这里执行编译,会有什么结果呢?
(1).C:\Documents and Settings\peng> javac HelloWorld.java 这时编译器会给出如下的错误提示信息:
error: cannot read: HelloWorld.java
这是因为默认情况下javac是在当前目录下查找类文件,很明显这个路径不是我们存放类文件的地方,所以就会报错了
(2).C:\Documents and Settings\peng>javac D:\java\HelloWorld.java
这时编译成功。
所以,只要你执行javac命令的目录不是类文件存放的目录,你就必须在javac命令中显式地指定类文件的路径。
java -classpath的使用:
java:假设我们的CLASSPATH设置为:D:\peng\java\pro ,在该目录下有三个文件:HelloWorld.java / HelloWorldExtendsTestCase / HelloWorldExtendsHelloWorld。这三个文件的类声明分别如下:
HelloWorld.java :public class HelloWorld
HelloWorldExtendsHelloWorld.java :public class HelloWorldExtendsHelloWorld extends HelloWorld
HelloWorldExtendsTestCase.java:public class HelloWorldExtendsTestCase extends junit.framework.TestCase
假设我们已经按照上面关于javac -classpath和javac 绝对路径的使用,顺利地完成了三个文件地编译。现在我们在C:\Documents and Settings\peng>目录下执行这三个.class文件
(1).C:\Documents and Settings\peng>java HelloWorld
Hello World
可以看到执行成功。为什么我们在 C:\Documents and Settings\peng>执行命令,JVM能够找到D:\peng\java\pro\HelloWorld.class文件呢?这是因为我们配置了系统变量CLASSPATH,并且指向了目录:D:\peng\java\pro 。所以JVM会默认去该目录下加载类文件,而不需要指定.class文件的绝对路径了。
(2).C:\Documents and Settings\peng>java HelloWorldExtendsHelloWorld
Hello World
可以看到执行成功了。HelloWorldExtendsHelloWorld继承了HelloWorld类,所以在执行时JVM会先查找在CLASSPATH下是否存在一个HelloWorld.class文件,因为我们已经成功编译了HelloWorld 类了,所以可以成功执行HelloWorldExtendsHelloWorld.class
(3).C:\Documents and Settings\peng>java HelloWorldExtendsTestCase
Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/TestCase
可以看到程序抛出异常了,提示找不到junit.framework.TestCase文件。为什么同样在:\peng\java\pro 下,HelloWorldExtendsHelloWorld.class就可以成功执行,而这个就不行了呢?这是因为: junit.framework.TestCase.class文件并不存在于当前目录下,所以为了能够让程序成功运行,我们必须通过指定CLASSPATH的方式,让JVM可以找到junit.framework.TestCase这个类,如(4):
(4). C:\Documents and Settings\peng>java -classpath %CLASSPATH% HelloWorldExtendsTestCase
Hello World
总结:
(1).何时需要使用-classpath:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类
(2).何时需要指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)
发表评论
-
Hibernate createSQLQuery list 返回结果转成Map的方法
2012-03-03 17:24 2345Query query = session.creat ... -
转==Java获取请求客户端的真实IP地址
2010-10-17 17:03 1557通常通过request.getRemoteAddr() 取得 ... -
jsp中还可以定义方法,不错
2010-08-31 18:35 2158<%! public String myDecode ... -
jstl 对国际化i18n的支持
2010-08-24 16:02 2724下面是我转自:http://spaceflysky-163-c ... -
jstl学习-变量的取值范围和编译后的代码
2010-08-24 15:42 3174主要测试问题: 1、隐式EL变量 pageScope: ... -
基于多种协议的消息传递机制简介(转)
2010-08-24 10:25 2902转载 基于多种协议的 ... -
(转)AssertionError 的来源
2010-08-24 10:23 1324下面哪些类与AssertionError 类是"is ... -
Java单例模式-双重检查为什么会有问题
2010-08-24 10:22 0参考资源: http://www.iteye.com/topi ... -
(转)接口与抽象接口(interface & abstract interface)
2010-07-23 14:57 1379前一段用到Spring的ApplicationContext接 ... -
(转)用Hash目录优化文件存储
2010-07-23 13:27 2600Hash目录是一种优化文件存储性能的方法。无论是Windows ... -
(转)传智播客学习文件上传
2010-07-22 11:14 1324今天讲了文件的上传文件上传与下载工程。这在实际的应用中非常常见 ... -
输出XXX{0}YYY{1}ZZZ格式的字符串方法
2010-07-21 15:10 1610public static void main(Strin ... -
(转)findstr 命令学习
2010-07-12 18:02 1705findstr 命令学习 findstr 是 Windows ... -
Apache lnag 包生成随机数的方法
2010-07-10 12:02 1519使用 apache 包的 RandomStringUtils类 ... -
(转载)javamail 发送邮件的简单实例
2010-07-09 18:31 1039今天学习了一下JavaMail,javamail发送邮件确实是 ... -
(转载)使用Servlet实现文件下载的时候,避免浏览器自动打开文件
2010-07-07 15:35 1577response.addHeader("Cont ... -
File 协议
2010-01-29 15:41 2782英文原义:File Protocol 中文释义:本地文件传输 ... -
深入了解字符集和编码
2009-03-03 11:22 1338关键字: 字符集 编码 ... -
在命令行中"执行命令"的搜索路径
2009-02-27 10:25 1666问题:在命令行中输入一个命令,如telnet,javac,ja ... -
JAVA 类加载原理收藏
2009-02-25 10:54 2780该文章来源于网上,如 ...
相关推荐
总之,理解并熟练掌握classpath的使用是Java开发的基础,这关乎到程序的正常运行和依赖管理。通过上述讲解和实践,你应该能更好地应对各种classpath相关的问题。记得在实际工作中根据项目需求和团队规范进行合理配置...
这样,Java编译器会使用系统环境变量`CLASSPATH`中定义的路径。 举个例子,如果你有一个名为`HelloWorld.java`的源文件,存放在`D:/java`目录下,而你当前位于`C:/Documents and Settings/peng`,不指定路径直接...
假设你需要添加`D:\Program Files\Java\jdk1.6.0_16\lib\dt.jar`和`D:\Program Files\Java\jdk1.6.0_16\lib\tools.jar`这两个JAR文件到`classpath`中,你可以按照以下步骤进行设置: 1. **打开系统环境变量设置界面...
查询 java home 以找到其引导类路径。 org.codehaus.mojo/java-boot-classpath-detector/1.9/java-boot-classpath-detector-1.9.jar
Java中的ClassPath和Package是Java开发中至关重要的概念,它们直接影响到Java程序的编译和运行。在这篇文章中,我们将详细探讨这两个主题。 首先,让我们理解什么是ClassPath。ClassPath是Java虚拟机(JVM)查找类...
- 如果需要添加多个路径,可以在变量值中使用分号(`;`)分隔。 5. **保存设置**: - 完成设置后,点击“确定”保存更改。 **示例**: 假设您的类文件位于`C:\MyProjects\Classes`,则可以设置如下: ``` CLASSPATH=...
Java语言的classpath环境变量是Java开发和运行过程中不可或缺的一个配置项。它定义了Java虚拟机(JVM)在执行程序时查找类文件的路径,确保JVM能够找到所需的类库和资源。理解并正确设置classpath对于Java开发者至关...
可以在配置文件中配置所需要的路径,以便在项目中使用。 总结 Java 项目中获取路径非常重要。使用 `getResource` 方法可以获取相对路径,使用 `getRealPath()` 方法可以获取绝对路径。ClassPath 路径是 Java 项目...
查询 java home 以找到其引导类路径。 org.codehaus.mojo/java-boot-classpath-detector/1.14/java-boot-classpath-detector-1.14.jar
尽管现在Java由Oracle管理,但Sun的JDK版本仍然在某些特定环境中使用,尤其是在那些需要兼容旧代码或特定功能的场景下。 ### Eclipse IDE的使用 Eclipse是一个开源的集成开发环境(IDE),主要用于Java开发,但也...
优步快速、超轻量级的 Java 类路径和模块路径扫描器。 通过直接解析类文件二进制格式而不是使用反射来扫描类路径和模块路径。 见 https://github.com/lukehutch/fast-classpath-scanner io.github.lukehutch/fast-...
- 可以使用 `set CLASSPATH=路径`(Windows)或 `export CLASSPATH=路径`(Linux/Mac)来临时修改环境变量中的 classpath。 - 例如:`set CLASSPATH=E:\test`。 2. **持久化设置 Classpath**: - 在 Windows ...
这可以通过多种方式实现,例如在IDE(如Eclipse或IntelliJ IDEA)中设置库依赖,或者在命令行运行Java程序时使用`-cp`或`-classpath`选项指定JAR的位置。一旦驱动被正确加载,就可以通过`Class.forName(...
在Java开发环境中,正确配置`JAVA_HOME`、`path`和`classpath`是非常重要的步骤。这不仅关系到Java开发环境能否顺利搭建,还会影响到后续的项目开发流程。接下来,我们将详细解释这三个环境变量的作用及具体设置方法...
在实际开发中,你可以将`mysql-connector-java-5.1.10.jar`添加到项目的类路径(classpath)中,或者在Maven或Gradle等构建工具的依赖管理中指定对应的版本,以确保Java应用能够找到并使用这个驱动。 总结,`mysql-...
首先,你需要将`mysql-connector-java-5.1.47-bin.jar`添加到你的项目类路径(ClassPath)中,这样Java运行时环境才能找到并加载这个驱动。这可以通过多种方式实现,例如在IDE(如Eclipse或IntelliJ IDEA)中配置...
在使用mysql-connector-java-5.1.40-bin.jar时,通常需要将其添加到项目的类路径(classpath)中,这样Java虚拟机在运行时才能找到并加载这个驱动。在IDE如Eclipse或IntelliJ IDEA中,可以直接将jar文件添加到项目的...
Java命令行classpath(类路径)的设置是Java开发过程中的一项基础操作,对于理解和运行Java程序至关重要。类路径是指定Java虚拟机(JVM)在执行Java程序时查找类文件的位置。正确配置类路径能确保JVM能够找到并加载...
查询 java home 以找到其引导类路径。 org.codehaus.mojo/java-boot-classpath-detector/1.8/java-boot-classpath-detector-1.8.jar
Java 环境配置是 Java 开发的基础,我们需要正确地配置 JAVA_HOME, CLASSPATH, PATH 等环境变量,以便正确地编译和运行 Java 程序。在本节中,我们将详细地介绍 Java 环境配置的目的和设置方法。 一、JAVA_HOME ...