Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小程序';s getCodeBase返回null_Java_File_Applet - Fatal编程技术网

Java 小程序';s getCodeBase返回null

Java 小程序';s getCodeBase返回null,java,file,applet,Java,File,Applet,我有一个小程序,需要打开一个文件流。此文件是一个本地文件,位于小程序和HTML文件所在的位置: URL localURL = new URL(getCodeBase(), "pixs/icons.zip"); InputStream localInputStream =localURL.openStream(); 它以前工作正常,但升级到java 1.7 build 25后,getCodeBase()始终返回null。 这实际上是有记录的!,唉,没有人建议如何克服它 一个行之有

我有一个小程序,需要打开一个文件流。此文件是一个本地文件,位于小程序和HTML文件所在的位置:

    URL localURL = new URL(getCodeBase(), "pixs/icons.zip");
    InputStream localInputStream =localURL.openStream();
它以前工作正常,但升级到java 1.7 build 25后,getCodeBase()始终返回null。 这实际上是有记录的!,唉,没有人建议如何克服它

一个行之有效的方法是使用完整路径:

   URL localURL = new URL("file:c:/myFolder/pixs/icons.zip");
是否有其他选项可以在不使用完整路径的情况下解决此问题?

也许您可以使用。取决于设置的结构,代码库和文档之间是否存在密切关系。没有永久的解决方案:
getDocumentBase
在7u40中以相同的方式修改,根据

如果没有,那么您可以尝试使用从JAR获取URL,例如小程序的类文件,然后反汇编该URL以获取JAR的位置,从而获得代码库。这是未经测试,所以请随意编辑这篇文章,如果你尝试了这一点

最后但并非最不重要的一点是,由于该更改只影响本地小程序,所以可以运行(本地或公共)web服务器来为该小程序提供服务

如果你想就此发表更正式的声明,我将引用:

如果小程序需要加载资源:

  • 如果资源在applet JAR中,他们应该能够直接加载它,而不需要代码库信息
  • 如果资源位于任意位置,而不是applet JAR中,那么它们应该有其他方法到达该位置,因为它无论如何都不是applet资源的一部分。(例如,
    user.home
    java系统属性,前提是其小程序拥有所有权限)

(感谢)提到了其他一些替代方案。最不可能受到未来Oracle修改影响的是在包含HTML的页面中使用
location.href
,例如,从JavaScript编写
标记。

“它过去工作正常,但升级到java 1.7 build 25后,getCodeBase()始终返回null。这实际上是有文档记录的!”在哪里?在中没有提到它。@AndrewThompson:作为文档指出。考虑到所有的“本地”特性,为什么这甚至是一个小程序?