Java weblogic类加载二进制资源

Java weblogic类加载二进制资源,java,resources,weblogic,classloader,weblogic-10.x,Java,Resources,Weblogic,Classloader,Weblogic 10.x,我试图在我的应用程序中使用二进制资源。我需要它来加密/解密密码。该文件位于my ear的“classes”文件夹中,就像应用程序可以毫无问题地访问的属性文件一样 无论如何,我加载的文件如下 ClassLoader.class.getResourceAsStrem(/file.xxxx); 但对于二进制文件,结果InputStream为空 问题是,为什么它适用于属性文件而不适用于二进制文件?如何加载二进制资源 致以最良好的祝愿 确保该文件在类路径上可用 改为使用上下文类加载器-这将确保尝试查找文

我试图在我的应用程序中使用二进制资源。我需要它来加密/解密密码。该文件位于my ear的“classes”文件夹中,就像应用程序可以毫无问题地访问的属性文件一样

无论如何,我加载的文件如下

ClassLoader.class.getResourceAsStrem(/file.xxxx);
但对于二进制文件,结果InputStream为空

问题是,为什么它适用于属性文件而不适用于二进制文件?如何加载二进制资源

致以最良好的祝愿

  • 确保该文件在类路径上可用
  • 改为使用上下文类加载器-这将确保尝试查找文件的代码也可以驻留在共享库中
  • 关于以下内容:

    Thread.currentThread().getContextClassLoader().getResourceAsStream(..)
    

    希望对您有所帮助。

    请使用您当前所在的类名,而不是ClassLoader

    YourClass.class.getResourceAsStrem(/file.xxxx);
    

    看起来是个好主意。我明天在办公室试试。但是,为什么使用属性文件而不使用二进制文件呢?我正在使用下一个代码加载资源:InputStream is=Thread.currentThread().getContextClassLoader().getResourceAsStream(/myBinaryFile.bin)。现在的问题是weblogic没有返回InputStrem,而是返回名为“SafeZipFileInputStream“如果您在SafeZipFileInputStream上执行javap,您会注意到该类是从java.io.FilterInputStream扩展而来的,而java.io.InputStream又是从java.io.InputStream扩展而来的,因此,只要您使用基类,流类型就不会有什么不同。如果将其用作输入流,会有问题吗?是的,生成的文件是war文件中weblogic生成的jar($WL_HOME/servers..//6iiuve/war/WEB-INF/lib/_WL_cls_gen.jar),而不是我的二进制文件。为什么不先打印出所有可用的资源,看看您的文件是否被提取?与上面的代码相同,只是不执行getResourceAsStream(),而是执行一个getResources(),然后迭代枚举并将其打印出来,以查看文件是否显示。