首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MyClass.class.getResource("MyClass.class").getPath()在JBoss 4.2.3和JBoss 5.1.0中返回不同的路径

MyClass.class.getResource("MyClass.class").getPath()在JBoss 4.2.3和JBoss 5.1.0中返回不同的路径
EN

Stack Overflow用户
提问于 2011-06-13 09:56:30
回答 1查看 1.4K关注 0票数 0

在我的一个库(比如abc.jar)中,我有一个类MyClass.class。由于我需要在运行时了解abc.jar文件位于哪个目录中,因此使用了以下逻辑。

代码语言:javascript
运行
复制
String classPath = MyClass.class.getResource("MyClass.class").getPath();

在JBoss 4.2.3中,这将导致classPath等于以下内容:

代码语言:javascript
运行
复制
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作为

代码语言:javascript
运行
复制
/D:/app-servers/jboss-5.1.0.GA/server/uat012/deploy/MyApp.war/WEB-
INF/lib/abc.jar/com/foo/bar/MyClass.class

不同的是,它不是以“file”和“!”开头的。分割jar位置和jar中类位置的字符也会丢失。

那么,是因为JBoss 5.1.0中类加载的方式不同吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-13 14:57:18

简单地说,做您想做的事情是不安全的,因为它不能保证您试图定位的jar文件甚至存在。如果罐子已经膨胀了呢?如果应用服务器使用其他形式的存储(即数据库中的存储)怎么办?jar的位置是一个不应该对应用程序很重要的实现细节。

尽管如此,如果您必须这样做(表示设计错误),您将不得不在每个目标平台上尝试它,并编写特定于平台的代码,每次升级到最新版本时,您都必须重新检查这些代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6328944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档