不同的路徑在我的圖書館之一(比如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