【发布时间】:2011-10-04 07:54:14
【问题描述】:
我有一个Lotus Notes 数据库,它正在与远程Web 服务进行一些交互。我编写了一个自定义 Java 类来执行交互。
根据用户的设置,可以从三个位置之一执行类方法:
- 在通过 Lotus Notes Java 代理调用的 Java 脚本库中
- 在位于用户“jvm/lib/ext”目录的 JAR 文件中
- 在位于用户“jvm/lib”目录(例如,“jvm/lib/custom_dir”)内的自定义目录中的 JAR 文件中。 Lotus Notes JVM 通过使用“JavaUserClassesExt”本地 notes.ini 变量了解自定义目录。
在我的班级中,我只是希望能够返回当前班级正在执行的位置。因此,如果它从选项 2 或选项 3 执行,则返回 JAR 文件路径。如果它从选项 1 执行,则返回我可以处理的其他内容。
我尝试了以下方法。
getProtectionDomain() 方法
getClass().getProtectionDomain().getCodeSource().getLocation()
结果:
java.security.AccessControlException: Access denied (java.lang.RuntimePermission getProtectionDomain)
没有选项可以更改运行此设置的任何客户端上的任何安全设置。
Class.getResource 方法
String myName = "/" + getClass().getName().replace('.', '/') + ".class";
URL myResourceURL = getClass().getResource(myName);
结果: myResourceURL 始终为空。
ClassLoader.getResource 方法
String myName2 = getClass().getName().replace('.', '/') + ".class";
ClassLoader myCL = getClass().getClassLoader();
URL myResourceURL2 = myCL.getResource(myName);
结果: myResourceURL2 始终为空。
a) 我在上面哪里出错了?
和
b) 如何使用不同的方法获取当前正在执行的类的位置?
【问题讨论】:
标签: java jar lotus-notes