2010-03-12 102 views
4

我想在weblogic(10.3.2.0)中创建和加载动态类。这是我部署到weblogic服务器的ADF应用程序。在weblogic上加载类路径和类

当我打印

((GenericClassLoader)this.getClass().getClassLoader()).getFinderClassPath() 

我看到的路径,我的目录(当然不只是这条道路)

C:\...\system11.1.1.2.36.55.36\DefaultDomain\servers\DefaultServer\tmp\_WL_user\test\753the\dynamicClasses 

(我已经添加目录dynamicClasses到清单部署WAR轮廓 )。 在这个目录中我创建了类文件。我已经检查过,文件真的在那里创建。 当我尝试使用相同的类加载器加载创建的类时,为此我已经打印了classpath,引发了ClassNotFoundException。

它知道具有类和jar文件的目录的路径,但它不加载类。

使用URLClassLoader我可以加载类。但是我需要这样才能让我的类通过加载“常用”方式的类来看待。

我能够正确运行它,只需系统CLASSPATH

请问,你知道一个解释吗? WAR中的清单文件是否用于指定类路径的错误位置?

预先感谢您

Qjeta

+0

只是一个注释:因为我需要在运行时创建类,所以我需要知道将它们保存在哪里(这使得方法getFinderClassPath)并加载它们(正确设置类路径) – qjeta 2010-03-12 10:48:46

+0

您是否阅读了解WebLogic Server应用程序类加载:http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/classloading.html – 2010-03-13 16:19:16

+0

是的,但我还没有找到答案为我的问题。我可能会错过什么。 – qjeta 2010-03-15 11:44:32

回答

0

你有与后试图削减

C:\ system11.1.1.2.36.55.36 \默认域\服务器\ DefaultServer \ tmp_WL_user \ test \ 753the \ dynamicClasses \

或者它只对通过MANIFEST文件给出的jar名称起作用,而对目录名称不起作用。

+0

对于jar文件,它不起作用。尾部的斜线没有帮助。 看起来来自清单文件的类路径由于某种原因被忽略。 感谢您的回复 – qjeta 2010-03-12 10:33:08

+0

要排除,最终的MANIFEST包装在META-INF/right下? 你可以按照这个例子http://stackoverflow.com/questions/1272648/need-to-read-own-jars-manifest-and-not-root-classloaders-manifest并强制加载MANIFEST并检查类路径因为它的属性? – JoseK 2010-03-12 11:11:42

+0

我有包含战争的耳朵。在清单文件中都写入我的目录的类路径。 getFinderClassPath()包含我的目录的路径,当清单fie在战争内时(ear的清单文件似乎没有影响)。当我从所有清单文件打印出Class-Path属性时,我的目录没有路径 – qjeta 2010-03-12 12:48:40