FileLocator.resolve(url) 的转义结果

2023-08-21Java开发问题
3

本文介绍了FileLocator.resolve(url) 的转义结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

FileLocator.resolve(url) 方法可用于将地址 bundleentry://something/somewhere/x.txt 转换为适合 <代码>/mnt/foo/somewhere/x.txt.

The method FileLocator.resolve(url) can be used to translate an address bundleentry://something/somewhere/x.txt to a proper file URL for /mnt/foo/somewhere/x.txt.

但是,这也记录在 https://bugs.eclipse.org/bugs/show_bug.cgi?id=145096,URL 没有转义.例如,如果包含引用包的 Eclipse 安装位于包含空格的目录中,则 FileLocator.resolve 返回的 URL 仍然包含空格并调用 url.toURI()因此而失败.

However, which is also documented at https://bugs.eclipse.org/bugs/show_bug.cgi?id=145096, the URL is not escaped. As an example, if the Eclipse installation containing the referenced bundle is in a directory containing a space, the URL returned by FileLocator.resolve still contains the space and calling url.toURI() fails because of that.

  • 如何手动转义 URL 中的所有个必要字符?
  • 如何根据相对于当前路径的路径获取 File 对象捆绑?
  • How can I manually escape all necessary characters in the URL?
  • How can I get a File object based on a path relative to the current bundle?

作为参考,如果该文件位于包含空格的目录中,则尝试在插件的 .jar 文件中查找目录 dir 时失败的代码如下:

As reference, here is the code that fails when trying to find the directory dir inside my plugin's .jar file if that file is in a directory containing a space:

    final IPath pathOfExampleProject = new Path("dir");
    final Bundle bundle = Platform.getBundle(AproveIDs.PLUGIN_ID);
    final URL url = FileLocator.find(bundle, pathOfExampleProject, null);
    final URL url2 = FileLocator.toFileURL(url);
    url2.toURI(); // Illegal character in path at index [...]

推荐答案

我刚找到这段代码:

http://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/BundledSystemLibrary.java?r=2057

相关行确实有帮助:

// We need to use the 3-arg constructor of URI in order to properly escape file system chars.
URI resolvedUri = new URI(resolvedUrl.getProtocol(), resolvedUrl.getPath(), null);

这篇关于FileLocator.resolve(url) 的转义结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

Eclipse 在尝试启动 Android 应用程序时卡住了
Eclipse gets stuck when trying to launch Android app(Eclipse 在尝试启动 Android 应用程序时卡住了)...
2024-08-25 Java开发问题
14

Java 代表?
Java Delegates?(Java 代表?)...
2024-08-25 Java开发问题
15

Eclipse:无法初始化监视器线程:无法建立环回连接
Eclipse: Failed to initialize Monitor Thread: Unable to establish loopback connection(Eclipse:无法初始化监视器线程:无法建立环回连接)...
2024-08-25 Java开发问题
4

Eclipse-找不到JDK
Eclipse- JDK not found(Eclipse-找不到JDK)...
2024-08-25 Java开发问题
6