Jdev项目依赖库

时间:2009-09-11 14:46:58

标签: jdeveloper

JDeveloper 10.1.3.x

我最近了解到,当部署到嵌入式OC4J容器时,未导出的库将不会包含在类路径中,因为它在application-oc4j-app.xml文件中没有库条目。

我还向自己演示了在项目依赖于的项目中导出的库包含在application-oc4j-app.xml文件中。< / p>

我的项目中未包含的库包含在内。我的项目依赖项执行中包含未经移植的库。

这是一个错误还是一个功能,我是否可以更改该行为,以便我的项目依赖项中的未导出的库也不会被包含在内?

谢谢, 史蒂夫

2 个答案:

答案 0 :(得分:0)

未导出的库不应包含在应用程序 -oc4j-app.xml文件中。看起来JDeveloper中存在一个错误或一些无法解释的行为。

恕我直言,在Eclipse或&lt;在此处插入另一个IDE&gt;和JDeveloper之间做出选择,选择Eclipse是明智的。

我之前提到的一个令人费解的行为是JDeveloper编译应用程序目录中所有项目的问题,即使它们不是当前工作区文件( jws 文件)的一部分。换句话说,JDeveloper会考虑将JPR文件包含在工作空间中,即使JWS文件另有说明(即,在JDeveloper工作空间中看不到)。

答案 1 :(得分:0)

到目前为止,我还没有找到为构建版本和运行时间指定不同类路径的方法,但在同事的帮助下,我的具体情况的解决方案偶然发现。即使连接器不是JDev项目,依赖项目也可以引用打包并加载它的log4j jar文件。对于独立以及嵌入式oc4j容器部署,它有效地模拟了运行时的行为,其中Web应用程序和相关的应用程序代码链接到第三方JCA连接器的类加载器加载的log4j实例。假设由两个不同的类加载器加载的log4j库仍然看起来是与log4j的静态初始化器相关的库的两个不同实例,我认为这不会起作用。 (这就是我所假设的,如果它在类加载器层次结构中找到自己的另一个实例,则会激发log4j抛出异常。)显然情况并非如此,至少对于嵌入式场景而言。我不必为独立容器测试这个,因为Maven构建知道不通过构建文件中的“提供”范围规范在应用程序EAR文件中包含log4j库jar的副本。嵌入式OC4J容器现在加载JCA连接器,关联的log4库实例,部署应用程序,并允许两者使用同一log4j库文件中的log4j类。不完全确定连接器和Web应用程序类加载器如何交互,但现在可以正常工作。