gpt4 book ai didi

java - 强制 Java 运行时在 NSF 中使用 Jar 而不是在 XPages 应用程序的同名服务器上使用 Jar

转载 作者:行者123 更新时间:2023-11-29 08:45:50 25 4
gpt4 key购买 nike

我正在尝试解决持久性 ClassNotFoundException。我们有一个调用共享公共(public) jar 的特定于应用程序的 jar,并使用反射创建我们在 XML 文件中指定的对象。这是它失败的地方。

特定于应用程序的 jar 驻留在我的 NSF 中。 commons jar 驻留在服务器上。我希望将 jars 保留在 NSF 中,因为我会经常更换它们并且无法访问服务器目录,即使在 Unit 中也是如此。

我们将应用程序 jar 放在与公共(public)包相同的包中,但这没有帮助。我怀疑服务器 jar 找不到应用程序 jar。应用程序 jar 成功调用了 commons jar,因此它正在朝那个方向努力。

我尝试将 commons jar 的副本放入 NSF,但这没有帮助。我认为它仍然首先运行服务器 jar。 jar 具有相同的名称。

我的问题是:如何强制 Domino Server 运行时使用应用程序的“commons”jar 而不是服务器的“commons”jar?想法是本地的 commons jar 会找到同一个包中的应用程序 jar 的类,我可以克服这个异常。

更新:此过程在从 jUnit 测试运行时以及在创建主方法时运行。

最佳答案

关键是确定失败是因为安全异常还是只是找不到 jar。如果它在加载 jar 时遇到安全异常,它只会给出 ClassNotFoundException。这可能是因为它使用与 XPpages 运行时相同的 ClassLoader,这是我在使用 apache.commons.lang 时遇到的问题。

如果一个 jar 可能会定期更改并且您希望它来自多个 NSF,但无法访问服务器,那么最好的选择是创建一个 OSGi 插件(也称为扩展库)。这将克服大多数安全异常以及使用不同的类加载器。

将它放在 WebContent\lib 中,然后右键单击它并选择构建路径 > 添加到构建路径。然后它将使用不同的 ClassLoader。查看此博客文章的评论 http://www.intec.co.uk/how-to-add-in-built-java-packages/ . R9默认添加了lib文件夹。您确实需要将它添加到构建路径,然后它会跳转到 Referenced Libraries 文件夹。

关于java - 强制 Java 运行时在 NSF 中使用 Jar 而不是在 XPages 应用程序的同名服务器上使用 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25449155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com