eclipse FileLocator.toFileURL在IBM WebSphere包中抛出NPE

c90pui9n  于 2023-08-04  发布在  Eclipse
关注(0)|答案(1)|浏览(162)

目前,我面临的问题是,我试图从bundle类路径中获取WSDL资源,然后调用FileLocator.toFileURL将其从bundle资源转换为文件资源。在运行时,该方法在尝试获取URLConverter的示例时抛出了NullPointerException,我很困惑为什么会发生这种情况。下面是我正在使用的代码。

URL configURL = Preference.class.getResource("/META-INF/wsdl/Preference.wsdl");

if (configURL != null && configURL.getProtocol() != "file") {
    System.out.println("URL is not a file. Trying to convert from non-standard to something reference-able.");
    URL wsdlURL = null;

    try {
        wsdlURL = FileLocator.toFileURL(configURL);
    } catch (IOException e1) {
         System.out.println("IOException caught");
        e1.printStackTrace();
    } catch (NullPointerException e1) {
        System.out.println("NullPointerException caught");
        e1.printStackTrace();
    } catch (RuntimeException e1) {
        System.out.println("RuntimeException caught");
        e1.printStackTrace();
    } catch (Exception e1) {
        System.out.println("generic Exception caught");
        e1.printStackTrace();
    }

    PREFERENCE_WSDL_LOCATION = wsdlURL;
} else {
    System.out.println("URL is a file.");
    PREFERENCE_WSDL_LOCATION = configURL;
}

字符串
当我在RAD中本地运行代码时,它工作得很好。然而,正如我认为几乎所有在Eclipse中开发OSGi代码的人所发现的那样,它在部署时会崩溃。具体来说,它被打包到OSGi CompositeBundle Archive(CBA)中,并部署到WebSpherev8.5.5应用服务器上。下面是我经常遇到的错误及其堆栈跟踪。

java.lang.NullPointerException
    at org.eclipse.core.internal.runtime.Activator.getURLConverter(Activator.java:322)
    at org.eclipse.core.runtime.FileLocator.toFileURL(FileLocator.java:205)
    at Preference.<clinit>(Preference.java:37)


我做了几次理智检查,以确保我没有错过任何明显的东西。configURL变量返回一个值(bundleresource://2.fwk685840929/META-INF/wsdl/Preference.wsdl),我知道的所有这个工作流所必需的依赖项都添加到了我的类路径中(主要是equinox和eclipse.osgi库)。
我搜索了所有的地方,找到了两个主要的资源:FileLocator和Activator的源代码都是“出现在犯罪现场”,this Eclipse bug report的行号与我在堆栈跟踪中看到的完全相同。然而,这两种情况都没有意义,因为bug报告指出,这个错误是由于OSGi插件不可用而产生的--如果我真的要将OSGi包部署到WebSphere的OSGi生态系统中,这怎么可能呢?- 如果grepcode中的行号是可信的,那么错误显然是urlTrackers变量,这似乎与捆绑包问题不同,不是我能控制的东西。
我需要一些帮助因为我觉得我想多了一点。如何让FileConverter类在运行时实际工作?

hl0ma9xz

hl0ma9xz1#

我认为JavaDoc注解指的是org.eclipse.osgi插件的可用性,该插件包含FileLocator所需的bundleentry URL转换器。
我不认为FileLocator真的是为在Eclipse RCP环境之外工作而设计的。

相关问题