如何在WebSphere 6.1中的类路径上正确获取资源的URL?

时间:2012-02-29 22:06:53

标签: java websphere classpath classloader

下面的代码在Tomcat中运行得很漂亮,但是对getResource(...)的调用在WebSphere 6.1中返​​回null。我尝试过使用Thread.currentThread()。getClassLoader()和MyClass.class.getClassLoader() - 都返回null。

    URL url = null;
    ClassLoader cl = MyClass.class.getClassLoader();
    LOG.info("Using class's classloader.");

    url = cl.getResource("resources/AConfigFile.xml");

    if(url == null) {
        throw new RuntimeException("The ClassLoader returned null for the URL of the " +
                "the XML Document.  This is definitely not right.");
    }

......我也试过这个,没有运气......

   URL url = null;

    url = MyClass.class.getResource("resources/AConfigFile.xml");

    if(url == null) {
        throw new RuntimeException("The ClassLoader returned null for the URL of the " +
                "the XML Document.  This is definitely not right.");
    }

这是怎么回事?如何在类路径上正确获取资源的URL?

2 个答案:

答案 0 :(得分:4)

我猜不同之处在于ClassLoader的行为方式。您可以使用Class变体吗? MyClass的。class.getResource()?我们一直在WebSphere 6.1下使用Class.getResourceAsStream()

或者尝试使用前导斜杠替换资源路径。

使用Class变体,您的相对路径将显示在resources包下的MyClass子目录中。但ClassLoader变种可能不会。

答案 1 :(得分:1)

在servlet容器中,您应分别使用ServletContext.getResource()ServletContext.getResourceAsStream()而不是Class.getResource()Class.getResourceAsStream()。它更可能在不同的servlet容器中表现一致。

另外,仔细检查您的相对路径在您使用它的上下文中是否正确。尝试一个绝对路径,看看它是否有效。