MyException - 我的异常网
当前位置:我的异常网» J2SE » 对clazz.getResource("")的困惑,请朋友

对clazz.getResource("")的困惑,请朋友们解惑,多谢(3)

www.MyException.Cn  网友分享于:2013-12-15  浏览:2597次


------解决方案--------------------
我去看了看oralce的驱动

除了MANIFEST.MF不同外

有看了你所说的那个static代码块,贴出来给你看一下
OracleDriver类中的:
static 
{
m_driverAccess = new Properties();
m_driverAccess.put("thin-server", "oracle.jdbc.thinserver.ServerTTC7Protocol");
m_driverAccess.put("oci-server", "oracle.jdbc.ociserver.ServerOCIDBAccess");
m_driverAccess.put("thin", "oracle.jdbc.ttc7.TTC7Protocol");
m_driverAccess.put("oci8", "oracle.jdbc.oci8.OCIDBAccess");
m_driverAccess.put("oci", "oracle.jdbc.oci8.OCIDBAccess");
m_driverAccess.put("kprb", "oracle.jdbc.kprb.KprbDBAccess");
m_defaultDriver = null;
Timestamp timestamp = Timestamp.valueOf("2000-01-01 00:00:00.0");
try
{
if(m_defaultDriver == null)
{
m_defaultDriver = new OracleDriver();
DriverManager.registerDriver(m_defaultDriver);
}
}
catch(RuntimeException runtimeexception) { }
catch(SQLException sqlexception) { }
}


m_defaultDriver = new OracleDriver(); 他这里有new了一个对象




------解决方案--------------------
果然都是高手.
纯学习.
帮顶..............
------解决方案--------------------
关注下,研究研究!
------解决方案--------------------
因为我懒得去具体一个一个测试了,所以大家尽量领会精神,如果写出错来了,一定要狠狠拍我。

有了classpath,再看getResource()是怎么去classpath里找的

比如System.out.println("1 " + clazz.getResource(""));

意思,就是从先找到clazz所在的包,然后返回这个包,里的名字是""的资源。

同志,同志,注意啦。
要是文件系统,""还可以翻译成当前包的目录。
要是jar文件。你这个东西""返回是啥资源。jar里又不能当目录用。当然就是null了。这还有啥问题?

搞明白了这个就简单了。
下面的因为可以找到classpath的file:目录,所以当然就返回目录了。
------解决方案--------------------
探讨
我的真实需求是无论在多么复杂的情况(复杂的类加载环境)下我需要知道当前类所在的jar文件。

------解决方案--------------------
我的真实需求是无论在多么复杂的情况(复杂的类加载环境)下我需要知道当前类所在的jar文件。 
这个需求源于 
http://topic.csdn.net/u/20080518/23/c2fb1b90-4e21-46a9-a756-f0309c57f952.html 
但是现在我遇到的问题确实解决不了。

楼主,我也极度想知道这个问题的解答答案,UP上去
------解决方案--------------------
用过这个,this.getClass().getClassLoader().getResource("")

------解决方案--------------------
恩恩,我也正想搞明白这个问题!
学习了。
------解决方案--------------------
想到了就做!

刚刚做了一个试验,证实了上一贴的猜测,确实是 jar 包本身的问题:folder 也可以作为 entry 存在,而是否有这样的 entry 就直接影响了 getResource("") 的结果。

至于如何把 folder 加到 jar 中去,看你用什么做打包工具了,我用的是 Eclipse 的 Export/JAR file 功能,里面直接就有这个选项。

如果想看生成的 jar 包里是否有 folder 形式的 entry,可以用下面这个命令:

jar -tvf test.jar

至此,LZ 的问题应该算是有个完美的解释了吧 ^_^
------解决方案--------------------
回复
------解决方案--------------------

------解决方案--------------------
呵呵,学到不少东西,
------解决方案--------------------
没有研究过楼主的问题,只知道实现具体的程序
------解决方案--------------------

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有