不同的路径在我的图书馆之一(比如abc.jar),我有一个类MyClass.class。由于我需要在运行时了解哪个目录中存在abc.jar文件,因此使用了以下逻辑。MyClass.class.getResource( “MyClass.class”)。的getPath()返回到JBoss 4.2.3和JBoss 5.1.0
String classPath = MyClass.class.getResource("MyClass.class").getPath();
在JBoss中4.2.3,这将导致在CLASSPATH等于这样的事情:
file:/D:/app-servers/jboss-4.2.3.GA/server/uat012/deploy/MyApp.war/WEB-
INF/lib/abc.jar!/com/foo/bar/MyClass.class
而在JBoss的5.1.0,类路径返回
/D:/app-servers/jboss-5.1.0.GA/server/uat012/deploy/MyApp.war/WEB-
INF/lib/abc.jar/com/foo/bar/MyClass.class
不同的是,它不是以'文件'和'!'开始的在罐子里拆分罐子位置和类位置的字符也是缺失的。
那么,是不是因为JBoss 5.1.0中类加载的方式不同?
什么是从给定的类文件中识别jar的位置的最佳方式,而不依赖于web/app服务器和正常的JVM?
非常感谢Jim先生。我理解这一点,不幸的是,这是我遗留下来的一部分遗留代码,并且尽量不要改变太多。显然现在,这是需要重新写入一个标准的方式。 – ssethupathi 2011-06-13 15:27:27