В одной из моих библиотек (скажем, abc.jar ) у меня есть класс MyClass.class.Поскольку мне нужно понять, во время выполнения, в каком каталоге находится файл abc.jar , была использована следующая логика.
String classPath = MyClass.class.getResource("MyClass.class").getPath();
В JBoss4.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 classPath возвращается как
/D:/app-servers/jboss-5.1.0.GA/server/uat012/deploy/MyApp.war/WEB-
INF/lib/abc.jar/com/foo/bar/MyClass.class
Разница в том, чтоне начинается с 'file' и '!'символ, который разделяет местоположение фляги и местоположение класса в фляге, также отсутствует.
Итак, из-за различий в загрузке классов в JBoss 5.1.0?
Каков наилучший способ определить местоположение банки из файла заданного класса, независимого от сервера веб / приложений и обычной JVM ?