eclipse中使用反射机制时应该注意的问题
来源:互联网 发布:js获取扫描枪数据 编辑:程序博客网 时间:2024/06/05 12:40
今天学习时看到反射机制这一章,其中有有一行代码:
Class.forName("Tester");其中,Tester是一个同包下的类,我在eclipse中运行时,始终报ClassNotFound异常,代码也检查了N遍,没有问题,最后,我在cmd环境下运行,一切OK,这个时候也郁闷了,怎么回事。
后来在查资料的过程中,想起了在JDBC总运用反射获取驱动的代码:
Class.forName("com.mysql.jdbc.Driver");难道是需要写入完整的类路径,包括前面的包名称,后来改成如下的代码:
Class.forName("org.xn.chapter18.demo.Tester");OK,一切正常,看来Java的反射机制还是必须通过classpath配置的路径来查找类,如果在cmd中运行,由于是在当前目录下所以运行一切正常,所以这说明eclipse在运行java程序的时候,并不似从当前包的路径下运行的,那么是从那个地方发运行的呢?
为了查清这个问题,我添加了一个getRoot()方法来获取当前工作的目录名称:
public void getRoot() {//获取当前工作的根目录System.out.println(getClass().getResource("/"));}运行的结果是:“ file:/X:/demo1/CrazyJava/bin/ ”,这个时候我将编译好的Tester.class文件放在运行结果所示的目录下面,再将代码改回Class.forName("Tester");,在eclipse下面运行,一切正常。
下面贴上完整的代码,包含详细注释:
package org.xn.chapter18.demo;class Tester {static {System.out.println("Tester类的静态块...");}}public class ClassLoaderTest {public static void main(String[] args) throws ClassNotFoundException{ClassLoader cl = ClassLoader.getSystemClassLoader();//下面与的两个语句总必须把类的完整路径写出来,//否则直接报“ClassNotFoundException”异常//下面的语句仅仅是加载Tester类cl.loadClass("org.xn.chapter18.demo.Tester");System.out.println("系统加载Tester类");//下面语句才会初始化Tester类Class.forName("org.xn.chapter18.demo.Tester");// 以下的代码显示了当前运行的目录//这里我们发现了原因,eclipse在运行java程序时//并不是在“org.xn.chapter18.demo”这个包下运行的//而是在X:/demo1/CrazyJava/bin/这个目录下运行的//为了试验这个结果,我将编译后的Tester.class文件//放在了X:/demo1/CrazyJava/bin/目录下,这个时候//再改回Class.forName("Tester");运行正常。ClassLoaderTest c = new ClassLoaderTest();c.getRoot();}public void getRoot() {//获取当前工作的根目录System.out.println(getClass().getResource("/"));}}
0 0
- eclipse中使用反射机制时应该注意的问题
- ssh 使用时应该注意的问题
- [原创]web application中使用Profile应该注意的问题
- 在VC中使用资源文件应该注意的问题
- web application中使用Profile应该注意的问题
- WebApplication中使用Profile应该注意的问题
- -Android开发中,使用线程应该注意的问题!
- Android开发中,使用线程应该注意的问题!
- 16. Android中使用线程应该注意的问题
- Android开发中,使用线程应该注意的问题!
- Android开发中,使用线程应该注意的问题!
- Android开发中,使用线程应该注意的问题
- Android开发中,使用线程应该注意的问题
- android:configChanges="orientation"使用中应该注意的问题
- 在struts开发中使用validator验证时应该注意的基本问题
- Jquery中给属性赋值时应该注意的问题
- 对于使用xml配置文档时应该注意的问题
- 在开发WML时使用标签应该注意的问题
- HDU 1241 Oil Deposits (DFS)
- js算法:分治法-归并排序
- 将iPhone投影到Mac上
- Java创建文件夹和JSP下载文件
- C,C++开源项目中的100个Bugs
- eclipse中使用反射机制时应该注意的问题
- SIFT算法详解
- java 时间函数中的一个bug?
- 编程之美1.13 威佐夫博奕拓展的分析与论证
- jvm参数调优
- noip2011初赛-大整数开方
- HDU5386
- 关于是否要进行人生规划
- Java精确运算(BigDecimal)